[问题] 加了printf结果变量就不一样了?

楼主: ketchupgood (番茄酱)   2017-10-04 04:42:53
https://i.imgur.com/1p7si7t.jpg
https://i.imgur.com/86KmZwv.jpg
https://i.imgur.com/0PN7VEy.jpg
如题 完全不懂为什么 跪求解释OTZ
作者: CoNsTaR ((const *))   2017-10-04 05:04:00
打高空的说法,因为 c/c++ 有 side effect,结案
作者: Schottky (顺风相送)   2017-10-04 05:28:00
与其说不同意楼上,不如说我不知道楼上在讲什么?你的两个 scanf 写错了,把 warning 全开就会有警告了这些地方要小心点,出槌时会出现一个摸不著头脑的 bug然后你的算法是错的,试试 aabbb 和 cccdd
作者: yvb   2017-10-04 08:37:00
发[问题]不是有格式?且程式用贴图有点糟,建议用置底那篇方式.然后scanf处有warning但不影响; 后半比较像是算总字数而已.问题在于, printf 出来的 13 13 是否如同预期.也就是说, 犯了置底十三诫中,第一诫的延伸, 阵列后段无初值.
作者: kingofsdtw (不能閒下來!!)   2017-10-04 09:39:00
https://goo.gl/gcTqGq路过.文字处理是一门学问,我个人是不建议花太多时间因为没人会用C std来等待输入,argc/argv学好就好
作者: x000032001 (版废了该走了)   2017-10-04 09:48:00
好奇不会用std IO 要怎么处理档案IO
作者: CoNsTaR ((const *))   2017-10-04 10:32:00
楼楼上表示档案 IO?我都只用网络 socket 和 sql
作者: Schottky (顺风相送)   2017-10-04 11:19:00
我昨晚是喝多少... Orzyvb 说的没错,问题出在阵列无初值你以为阵列后段全部是 0 其实并不。不信可以在 scanf 前加上 memset(first,0,100); 和memset(second,0,100); 别忘了 #include <string.h>
楼主: ketchupgood (番茄酱)   2017-10-04 11:49:00
呃 aabbb跟cccdd显示是对的啊我看看楼上大大说的 我是完全新手所以有些术语听不太懂喔喔 可以了 原来要先设成0然后发文格式不对不好意思 没什么用过这版
作者: james732 (好人超)   2017-10-04 12:06:00
置底文有贴程式专用的网站,不要用截图的
楼主: ketchupgood (番茄酱)   2017-10-04 12:15:00
然后再问一个例子 如果abc!e跟acbe? 也要做成一样的话 我这个那边有问题哪边*https://godbolt.org/g/pLK63D
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-10-04 12:52:00
噗 不是哪边有问题 是哪边没问题用到三层for 你肿大了 比西瓜还大你最好重发一篇 照规定格式贴好
作者: Schottky (顺风相送)   2017-10-04 13:00:00
楼上的意思是同样的程式你比别人多花一万倍时间去跑
作者: stucode   2017-10-04 13:02:00
建议原PO从头思考一下,不只是时间复杂度的问题,你的算法从一开始就没有输出正确结果。例如:ab跟aa
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-10-04 13:10:00
for最讨厌的就是在for里面更动循环计数器(控制变量)
作者: Schottky (顺风相送)   2017-10-04 13:11:00
对啦,(abcde, aaaaa) 或 (abcdef, aaabbb) 这种组合
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-10-04 13:11:00
虽然C不太管 但是有两个counter同时前进 条件也不一定正常应该用while做
作者: Schottky (顺风相送)   2017-10-04 13:47:00
多赠送一组测资 (abc, abcskdfjskghdfkjghd)其实题目有提示正确的算法了,麻烦把题目再看一次...
作者: peterwu4 (notd)   2017-10-04 18:38:00
原po是用286在算吗?XDD 终止条件设字串长度就好了
楼主: ketchupgood (番茄酱)   2017-10-04 18:44:00
没 我只是天生反骨不想用提示做而已……提示做法我已经花10分钟打完了
作者: Schottky (顺风相送)   2017-10-04 18:53:00
喔喔喔,原来是太强所以要做自我挑战吗这题如果让我来做,会把两个字串都sort过再strcmp即可
作者: MOONRAKER (㊣牛鹤鳗毛人)   2017-10-04 21:58:00
SORT?
作者: Schottky (顺风相送)   2017-10-04 22:32:00
对,字串中的字母照顺序重排,在这题就顺便剔除非字母两个字串如果是同一组字母的不同排列sort过自然会变相同这个作法复杂度不如题目提示的distribution counting快
作者: CoNsTaR ((const *))   2017-10-04 22:37:00
其实题目的做法不也是先做 bucket sort 再比较两个阵列吗
作者: Schottky (顺风相送)   2017-10-05 02:38:00
可以视为distribution sort或bucket sort的前半部没错如果要我为我的方法想些广告单上的亮点,我想应该会是很好写,两个 qsort() 一个 strcmp() 就收工了但题目的方法可以处理接近无限大的字串,完全望尘莫及实际上如何做,留给原PO脑力激荡一下,显然不能用scanf我说的不一定对就是了,也许我今天也喝了两瓶高粱发酒疯

Links booklink

Contact Us: admin [ a t ] ucptt.com