作者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