专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

NOIP信奥赛算法之加减算式

  昨天晚上儿子说要考考我,让我做一道题,输入是一行一句只有加减运算的算式,譬如157,让我写一个程序来计算出结果。
  C里没有原生支持以字符串形式导入一个表达式,并直接计算出结果的能力,可能有一些第三方的库支持。正常做法,如果表达式里有加减乘除四则运算,还有小括号来强制指定优先级,则先把表达式转换成逆波兰表达式,再计算之。未来我会给出具体解法,难度属于普及提高。
  而这一题,只有加减两种运算,那就只能算入门难度了。因为加减运算的优先级相同,都按从左至右的结合律依次两两计算。
  表达式中有数字,有和两种运算符,混合在了一起,显然,用string类型来保存整个表达式最方便。
  表达式可能会非常长,譬如下面是一个例子:
  每个数字可能都不止一位,因此,要用一个int类型的变量来逐位提取每个参与运算的数字。
  自从2021年9月后,C14新特性终于可以用于NOIP了,语法糖(syntacticsugar,是指编程语言中可以更容易表达一个操作的语法,它可以使程序员更加容易去使用这门语言,操作可以变得更加清晰、方便,或者更加符合程序员的编程习惯)又有增加,对于一个字符串,可以用以下方式来遍历字符串s:
  而在这之前,只能用下面的语句来遍历:
  而且这种用法还会触发编译器告警,因为如果i为int类型,i的最大上限值是2,147,483,648,如果字符串的长度超过这个值,多余的部分就无法遍历到,正确的写法如下:
  这种写法更为冗长,好在有了C14,不用再那么麻烦了。
  除了以上三种之外,还有第四种遍历string的方法,一起来看一下:
  以上这种是采用迭代器iterator遍历string的方法。
  第一种方法最简洁,但是也有缺陷,譬如无法从右往左遍历字符串,也无法在一次循环中同时获得字符串的多个字符。所以其它几种方法也并不能被方法一完全取代。在某些场合还是得使用如上这些看起来比较复杂的遍历方法。
  在循环体内,需要对string中的每一个元素做判断,如果是数字,一种处理方式,否则,就是或者,那就是另外一种处理方式。程序结构如下:
  在处理字符串中的数字之前,首先要搞清一件事,形如12345和12345,在计算机内是完全不同的两种值,前者是一串字符串,并不能进行数学运算,只能打印出来。而后者是真实的数字,可进行数学运算。同样,字符3和数字3也完全是两码事。在C里,字符串用双引号括起来,字符用单引号括起来。
  表达式中夹杂着数字和和的运算符。我们只能把表达式当作一串字符来处理。因此我们要想个办法,把表达式中的数字字符串,譬如12345转变成12345,好让它进行数学运算。
  我用前面的方案一,把表达式字符串s中的每一个字符依次放入字符变量ch里。如果ch连续的得到数字字符,则需要把它们合并成一个int类型的整数,方法是用一个初始值为0的变量,不断的乘以10,再加上这个数字。譬如字符串123,从左往右,先把1拿出来,放在某个变量num中,然后乘以10再加上2,得到12放入num中,然后把num再乘以10得到120再加上3,就得到了123。
  由于ch虽然看上去是数字,其实本质是一个char类型的字符,要通过减去字符0,得到一个真正的数字。字符09在ASCII表中是连续排列的,如果我们得到或者保存一个字符3,其实它在计算机内真正的值是十进制的51,是该字符的ASCII码值。显然我们不能用51去直接运算。那怎么让51变成数字3呢?只要让它减去0的ASCII码值即可。0的ASCII码值为十进制48,3051483。这就完成了从3到3的转换。
  因此对于一连串的数字形式的字符,要转成int类型的整数,可用如下的方式:
  接下来,该处理运算符了,如果变量ch遇到一个运算符,该怎么处理?首先,我们可以意识到,遇到运算符就意味着变量num的数字合并工作暂时告一段落,变量num中的数字可以参于运算了,可以用来和上一次运算的结果进行或者的运算。那到底是还是呢?这可不是由当前的ch中的运算符来决定的,而是由上一次得到的运算符来决定的。因此,要有一个变量,来保存上一次的运算符。给它取个名字叫lastop吧,给其一个初始值。并用另一个变量ans来保存上一次运算的结果,给一个初始值0。
  试想,当遇到表达式中第一个运算符的时候(无论它是还是),num中保存的数字立即就会与初始值为0的ans做的操作,并把结果保存在ans里。这就是我们想要的结果。等运算完成,lastop的使命完成,我们就可以把当前ch中保存的运算符,放入lastop中,用于下一次的计算。同时,还要把num置为0,因为num的当前计算已经完成,它要变成0,以迎接下一批连续的数字。代码可扩展如下:
  我们快完成了,但这样的程序还是不太正确,试想一下,所有的表达式是以数字结尾的,并非以或者结尾。譬如表达式135,最后,有一个数字5,最后不可能是一个或者一个。而我们的任意一次计算,都是在遇到运算符或者时,才进行的。那最后那个数字,保存在num里的最后的数字,似乎是没有机会运行的,因为循环已经结束,它将被悲惨的丢弃掉。解决的办法也比较巧妙,当我们通过命令行得到整个表达式,在开始做计算之前,我们人为在表达式最后添加一个运算符,随便添加一个或者,都可以。这个运算符不会参于运算,只是为了让它左侧的那个数字,不被丢弃。
  整个程序的完整代码如下:
  这道题在洛谷上有,编号是P2788,感兴趣的同学可以去尝试一下。
  到这里,这题就做完了。儿子看完后大笑着说,完全没有必要那么麻烦,看我的,然后他给出了如下的代码:
  这段只有11行的代码,利用了C中cin语句的一个特性,当输入譬如为153时,如果用一个整数(int)类型的变量通过循环语句连续不断的去接收它,这个变量会先得到1,再得到5,再得到3,它会把号和号当作该数字的符号位,而不是运算符。如果把得到的这些数字加起来,就有1(5)(3)。其实结果与153并无不同,因此代码就可以简单到爆了。

文学油菜花开蜜蜂来记得那年油菜花开,村里来了两个外地的放蜂人。他们在村小学旁的水塘边搭了顶绿色的帐篷,几十口蜂箱沿着塘坡摆放着。学校离村子大半里路,附近有着一望无际铺天盖地的油菜花海。阳光朗照,春风硅谷技术企业那些吃灰的办公家具去哪儿了新华社作者陈丹美国硅谷技术企业裁员缩减办公空间应对经济寒冬之际,意外让办公家具倒卖生意大热。据纽约时报14日报道,旧金山湾区越来越多企业低价收购技术企业处理的家具,通过转售赚取差价硅谷银行倒闭会否让中国遭池鱼之殃?美国硅谷银行突然倒闭不仅一度令美国的金融界陷入恐慌,这起2008年金融风暴以来最大的银行破产案也在中国引起强烈反响,一些中国账户持有人担心钱拿不回来,许多中国初创科技企业也遭池鱼之欧美银行动荡之际这家欧洲银行想和俄罗斯金融换俘美国银门银行硅谷银行和签名银行在一周内接连爆雷,大到不能倒下的欧洲瑞士信贷银行也遭遇生存危机,令欧美银行和金融市场陷入剧烈动荡之中。过去一周,嗅到危机的各国监管机构和银行业机构正想买了不到半年,电动车就无法充电,坏了还得自己花钱换,原来背后藏着一条稳赚不赔的秘密快消八谈电动车电瓶稳赚不赔买了不到半年就坏了的电动车一个月没充电被饿死的电瓶商家一句人为因素不在三包范围的说辞这些让多日周转于客服和线下专卖店讨要说法的老高烦恼极了。送走最后一位顾两会上5个离谱提案,遭到一片骂声,网友胡说八道!今年的两会,可谓是精彩纷呈,很多的委员和代表提出了颇具建设性和时代性的建议,有的建议网友纷纷表示支持,有的建议却遭到一片骂声。1。建议取消生育登记结婚限制取消生育结婚限制是指所有孩大老虎尚军,依靠性贿赂,傍上两个副省长,从后勤荣升副市长自古贪官不长命,确实如此啊!虽然近年来,我国反腐败力度一再加大,可是贪污受贿还是屡出不穷。明知山有虎,却偏向虎行,到底是为什么?无非就是这三样东西让很多人都迷了心智权,色,财但是国课外书是闲书吗?家长该如何支持孩子阅读?这位校长说阅读,是一个民族凝聚力和创造力的重要源泉。一个人的阅读史,就是他的精神发育史。阅读的重要性,怎么强调都不为过。课外书是闲书吗?家长该如何支持孩子阅读?学校如何创设有效的阅读情境?深绘说两会7个关键字带你领略新起点新征程新目标新的起点新的征程新的出发。2023年是全面贯彻落实党的二十大精神开局之年。作为全国人民共商国是共谋发展的重要平台,2023年全国两会擘画出高质量发展的美丽蓝图,凝聚起建设中国式现代南财快评信贷投放持续火热,中性降准特征突出3月17日晚间,人民银行发布公告,决定于2023年3月27日降低金融机构存款准备金率0。25个百分点(不含已执行5存款准备金率的金融机构)。本次下调后,金融机构加权平均存款准备金率在家带娃不工作有错吗?为什么别人怀孕可以上班你就不能别人生完孩子几个月就上班了,你也不行。网图,侵删。一睁眼,就被这条热榜文章吸引住了眼球,这句似僧相识的话,曾经也在我的耳边回荡过无数次,直到有一天知道
佟大为黑马剧仅播1集,收视率第一!湖南卫视抓到王炸了这几个月里各种类型好剧争先播出,弄得观众应接不暇,古偶剧苍兰诀迎来大结局,男女主终于修成正果,虽然有些细节上的不足,但整体算是圆满。都市剧欢乐颂3虽然五美被换不被看好,但还是有不少周迅所有前任加起来都比不上一个陈坤?周迅我跟他有几十世了吧网友说周迅所有的前任加起来都比不上一个陈坤,陈坤和周迅的感情到底有多好?两人只要买房子都会买在上下楼,周迅说只要陈坤在楼上跺跺脚,她都可以直接上去找他玩,完全没有任何杂质的感情,不杨幂再次出演女主戏份,男主被大家公认有气质有演技,坐等追剧真正顶尖的明星,必须拥有过硬的素质优雅的谈吐以及丰富的演技,否则即便长相再漂亮,也无法获得观众的认同,从而被认为只是一个花瓶而已。杨幂是大家公认的一位当红女星,以她现在的实力带来一看懂了这些,才看懂隐入尘烟凡是有的,还要加给他,叫他有余。没有的,连他所有的,也要夺过来新约马太福音这个夏天,有部电影仅有3000万票房,却被称为今年国产最好的电影,被网友誉为电影版活着。它就是由李睿珺指导不炒作无绯闻,演50多部戏终于养成剧抛脸,她要火了欢乐颂3新五美中,最令我惊喜的就是饰演朱喆的张佳宁了。在这之前,她曾是温州一家人中的村花,和张译在黄土高原出演了一对土里土气的夫妻。她也是如懿传中高贵的颖妃,一句皇上礼重蒙古,你敢演员王东再被爆料结三次婚,三个孩子,联合前妻算计现任妻子演员王东这下出名了,原本都是剧中的配角角色,现在成了家庭狗血剧中的男一号,还是以渣男行径出名了。妻子晚上发布了被王东家暴的视频,看到妻子楚楚可怜的形象,以及王东失控暴跳如雷的样子,大S具俊晔一起做财产公证?汪小菲曝离婚原因,老具竟成汪小菲2。0近日,据某媒体爆料,大S和具俊晔已经偷偷做完了婚前财产公证,这说明大S的所有婚前财产都只属于她和孩子,与具俊晔无关。有网友评价说大S虽然是恋爱脑,但在财产方面还是头脑清晰的,做了公KPL皮肤活动改版,10点券给大师,962给吕布,提前预定不吃亏大家好,我是阿呆。这里将会给你带来王者荣耀最新的爆料内容。相信大家应该都知道,王者荣耀现在每周都有可能会上线新皮肤,所以很多玩家也非常好奇,本周的新皮肤会给到哪位英雄呢?没想到这一韩涵冲榜巅峰前十,辅助牛魔打到对面投降,队友却说号要没了作为一款竞技类游戏,王者荣耀一直都是非常重视公平和公正的,对于账号的审查也是十分严格,只要有违规行为,无论号主是谁都照封不误。比如微信区鼎鼎有名的富婆景慧,就曾被官方严打至不敢出来王者荣耀刺痛全网射手Solo首局,就被Gemini零封,QG教练真猛啊对于所有KPL职业比赛爱好者而言,QGhappy作为一支2017年才从预选赛升入KPL赛区的队伍,能在初出茅庐的第一个赛季,就成功捧起冠军奖杯,就足以说明这支战队,在当时的KPL赛超级人类(超击突破)卡顿延迟高跳ping掉帧解决办法超级人类(超击突破)是一款刚在steam上线的射击游戏,有着全新模式的游戏模式。最近有玩家反映超级人类(超击突破)出现卡顿延迟高跳ping掉帧的情况,如果你也遇到同样的问题,可以参
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网