看板 C_and_CPP 關於我們 聯絡資訊
/* 一直wa 不知道哪裡錯 我用\n來當作判斷輸入結束有錯嗎? */ #include<stdio.h> #include<stdlib.h> char maze[51][51]; int main(){ int x=0,y=0; int inix=0,iniy=0; char dir=0; char com=0; int lost=0; scanf("%d%d",&x,&y); //確定世界大小 while(scanf("%d %d %c\n",&inix,&iniy,&dir)!=EOF){ lost=0; while(scanf("%c",&com)!=EOF){ if(com=='\n' || lost) break; switch(com){ case 'F': switch(dir){ case 'N': if(iniy+1 <=y) iniy++; else if(maze[inix][iniy]!='L'){ //iniy+1>y maze[inix][iniy]='L'; lost=1; }//end else break; case 'S': if(iniy-1 >=0) iniy--; else if(maze[inix][iniy]!='L'){ //iniy+1>y maze[inix][iniy]='L'; lost=1; }//end else break; case 'E': if(inix+1 <=x) inix++; else if(maze[inix][iniy]!='L'){ //iniy+1>y maze[inix][iniy]='L'; lost=1; }//end else break; case 'W': if(inix-1 >=0) inix--; else if(maze[inix][iniy]!='L'){ //iniy+1>y maze[inix][iniy]='L'; lost=1; }//end else break; }//end switch break; case 'L': switch(dir){ case 'N': dir='W'; break; case 'S': dir='E'; break; case 'E': dir='N'; break; case 'W': dir='S'; break; }//end switch break; case 'R': switch(dir){ case 'N': dir='E'; break; case 'S': dir='W'; break; case 'E': dir='S'; break; case 'W': dir='N'; break; }//end switch break; }//end switch }//end while printf("%d %d %c",inix,iniy,dir); if(lost) printf(" LOST\n"); else printf("\n"); }//end while system("pause"); }//end main -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.172.123
stonehomelaa:把\n去掉試試 http://c-faq.com/stdio/scanfhang.htm 08/04 00:25
abcabcabc:我沒仔細看題目,只大概看了他的 Sample Input 08/04 08:15
abcabcabc:覺得應該是這邊的問題 while(scanf("%c",&com)!=EOF){ 08/04 08:15
abcabcabc:if(com=='\n' || lost) break; switch ... 08/04 08:16
abcabcabc:如果字串最後有空白的話呢? 08/04 08:18
abcabcabc:雖然我覺得 default 應該解決,不過如果要從輸入資料找 08/04 08:20
abcabcabc:我覺得好像都沒啥問題 08/04 08:20
abcabcabc:剛跑了下sample input 跟結果不同?輸入部分應該沒問題 08/04 08:29
rockmanray:嗯嗯 發現我寫錯了 感謝樓上 08/04 10:52
Schelfaniel:為何 ACM 只有四種語言可以選 @.@ 08/04 11:04