[問題] ACM494 兩種做法的問題

看板C_and_CPP (C/C++)作者 (鵬羽)時間16年前 (2009/02/09 20:24), 編輯推噓6(608)
留言14則, 5人參與, 最新討論串1/1
下面是我做的兩種做法 第一種AC 第二種WA 不過我一直找不出來第二種錯在哪裡XD 有哪個測資是兩個做法會有不同的地方 請各位高手幫幫忙 謝謝 int main() { char str[400]; register int i,len,count; while(gets(str)) { len=strlen(str); if(len==0) return 0; count=0; for(i=0;i<len;i++) { if( (isalpha(str[i])) && !(isalpha(str[i+1])) ) count++; } printf("%d\n",count); } } ================================================ int main() { register int count=0; register char c; while(c=getchar()) { if(isalpha(c)) { while(c=getchar()) { if(isalpha(c)) continue; else break; } count++; } if(c=='\n') { printf("%d\n",count); count=0; continue; } if(c==EOF) { printf("%d",count); return 0; } } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.107.205

02/09 20:49, , 1F
差滿多的, 第一個只看相鄰兩個字元的對應關係
02/09 20:49, 1F

02/09 20:52, , 2F
呃... 忘了上面的推文 ._.
02/09 20:52, 2F

02/09 20:53, , 3F
問題應該在, 進入 isalpha 之後, 如果下一個非 alpha 就是換
02/09 20:53, 3F

02/09 20:53, , 4F
行, 那就會少 output 結果
02/09 20:53, 4F

02/09 20:53, , 5F
也不對 ._.
02/09 20:53, 5F

02/09 21:28, , 6F
if (c==EOF) 那段砍掉應該就會對了?
02/09 21:28, 6F

02/09 21:37, , 7F
if (c==EOF) 那邊的 printf() 沒有換行?
02/09 21:37, 7F

02/09 21:41, , 8F
TLE沒有結束條件
02/09 21:41, 8F

02/09 21:50, , 9F
換行也一樣WA
02/09 21:50, 9F

02/09 22:08, , 10F
那就試著把if (c==EOF)那行裡面的printf砍掉?
02/09 22:08, 10F

02/09 22:19, , 11F
這樣最後一行的輸出勒?還是ACM每行輸出完會enter?
02/09 22:19, 11F

02/09 23:07, , 12F
EOF了為啥還要輸出?
02/09 23:07, 12F

02/09 23:23, , 13F
大概了解意思我試試看
02/09 23:23, 13F

02/09 23:25, , 14F
恩恩是那裡沒錯 謝謝 對線上測試的方法又多了解一點了
02/09 23:25, 14F
文章代碼(AID): #19a224qI (C_and_CPP)
文章代碼(AID): #19a224qI (C_and_CPP)