作者rockmanray (禿驢)
看板C_and_CPP
標題[acm] 118
時間Mon Aug 3 23:56:42 2009
/*
一直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
推 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