作者bafu (古代牧羊犬)
站内Prob_Solve
标题[问题] ACM 11530 - SMS Typing
时间Thu Feb 19 15:09:11 2009
大家好 :) ACM 11530 让我遇到了一点麻烦。
在确认过 UVa 的测试输入没有 big number 之後,我仍然不断地得到 WA。
虽然试着在 UVa 讨论区寻找资讯,可惜没有发现我碰上的问题。
我的方法是用 simulation,但仍然一直找不到 WA 的原因,
因此想和大家讨论看看。 :)
题目网址:
http://0rz.tw/7cikl
程式码:
http://rafb.net/p/4PYLpY89.html
测试资料:
http://rafb.net/p/agAEEv19.html,其中第三笔资料为五个空格
测试结果:
http://rafb.net/p/RjYdoi76.html
【解决方法】
版友 fadingaway 很热心地告诉我,问题在於「scanf("%d\n", &t);」这行。
scanf 里最後加上的 '\n',会导致 scanf 将之後出现的空白字元也取掉。
很可惜的是,我们都不知道是什麽原因造成的。
想请问大家,是什麽原因造成这样的现象呢?谢谢罗! :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.103.217
※ 编辑: bafu 来自: 59.120.103.217 (02/19 16:05)
※ 编辑: bafu 来自: 59.120.103.217 (02/19 16:05)
※ 编辑: bafu 来自: 59.120.103.217 (02/19 16:06)
1F:推 ledia:scanf 的 format 只要有 whitespace 都会把之後的 02/19 16:19
2F:→ ledia:whitespace 吃掉, 这点看 scanf 的实作源始码就知道 02/19 16:20
3F:→ bafu:我在 glibc 的 vfscanf.c 找到相关的资讯了,谢谢 ledia :D 02/19 17:50