[ACM ] 118

看板C_and_CPP (C/C++)作者 (GP500)時間16年前 (2009/07/17 16:59), 編輯推噓5(5013)
留言18則, 2人參與, 最新討論串1/1
題目: http://luckycat.kshs.kh.edu.tw/homework/q118.htm 一直WA 囧囧囧 小弟我的想法是開一張地圖,如果有機器人掉下去就記下來。 以便之後做判斷,不過還是WA XDD 請各位大大幫忙看一下QQ CODE: #include <stdio.h> #include <string.h> /* 0 N 3 W + E 1 S 1 */ int main() { int x=0,y=0,i,f=0,j=0; int dir=0; int xx=0,yy=0; char d,order[101]={'\0'},e; int xa[101]={-1},ya[101]={-1}; int ax[52][52]={0}; scanf("%d %d",&xx,&yy); while(scanf("%d %d %c",&x,&y,&d)!=EOF){ scanf("%c",&e); gets(order); xa[j] = x; ya[j] = y; j++; switch(d){ case 'N': dir = 200; break; case 'E': dir = 201; break; case 'S': dir = 202; break; case 'W': dir = 203; break; } for(i=0;i<strlen(order);i++){ switch(order[i]){ case 'R': dir++; break; case 'L': dir--; break; case 'F': if(1){ switch(dir%4){ case 0: if(ax[x][y+1]==-1) break; y++; break; case 1: if(ax[x+1][y]==-1) break; x++; break; case 2: if(ax[x][y-1]==-1) break; y--; break; case 3: if(ax[x-1][y]==-1) break; x--; break; } } break; } switch(dir%4){ case 0: d = 'N'; break; case 1: d = 'E'; break; case 2: d = 'S'; break; case 3: d = 'W'; break; } xa[j] = x; ya[j] = y; j++; if(x>xx||y>yy||x<0||y<0){ printf("%d %d %c LOST\n",xa[j-2],ya[j-2],d); ax[x][y]=-1; f=1; break; } } if(f==0) printf("%d %d %c \n",x,y,d); char d,order[101]={'\0'},e; f=0; dir = 0,j=0; int xa[100]={-1},ya[100]={-1}; } return 0; } CODE2: #include <stdio.h> #include <string.h> /* 0 N 3 W + E 1 S 1 */ int main() { int x=0,y=0,i,f=0,j=0; int dir=0; int xx=0,yy=0; char d,order[101]={'\0'},e; int tx=0,ty=0; char dd[]="NESW"; int ax[52][52]={0}; scanf("%d %d",&xx,&yy); while(scanf("%d %d %c",&x,&y,&d)!=EOF){ scanf("%c",&e); gets(order); tx=x;ty=y; switch(d){ case 'N': dir = 200; break; case 'E': dir = 201; break; case 'S': dir = 202; break; case 'W': dir = 203; break; } for(i=0;i<strlen(order);i++){ if(order[i]=='R') dir++; else if(order[i]=='L') dir--; else if(order[i]=='F'){ switch(dir%4){ case 0: y++; break; case 1: x++; break; case 2: y--; break; case 3: x--; break; } } d = dd[dir%4]; if(x>xx||y>yy||x<0||y<0){ if(ax[tx][ty]!=-1){ printf("%d %d %c LOST\n",tx,ty,d); f=1; } x = tx; y=ty; ax[tx][ty]=-1; } j++; tx =x; ty=y; } if(f==0) printf("%d %d %c \n",x,y,d); f=0;j=0; } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.71.91

07/17 17:10, , 1F
sample input 就不對了耶
07/17 17:10, 1F

07/17 17:21, , 2F
我怎麼測出來是對的?
07/17 17:21, 2F
※ 編輯: zodiace 來自: 220.139.71.91 (07/17 17:31)

07/17 23:14, , 3F
為什麼同樣變數迴圈最後又宣告一次呀
07/17 23:14, 3F

07/17 23:15, , 4F
你的 switch 裡的 if, 有一組寫錯了
07/17 23:15, 4F

07/18 03:17, , 5F
我知道這白痴XDD 不過我是因為不知道有什麼好方法初始化這
07/18 03:17, 5F

07/18 03:17, , 6F
些變數才這樣用…… 結果改正了還是WA~囧囧
07/18 03:17, 6F

07/18 12:51, , 7F
如果第一步就掉下去你會印什麼 ? 比如初始是 0 0 S
07/18 12:51, 7F

07/18 12:51, , 8F
第一步是 F
07/18 12:51, 8F
※ 編輯: zodiace 來自: 61.228.128.85 (07/18 16:58)

07/18 16:58, , 9F
改了一下 不知道有沒有比較好 囧囧囧
07/18 16:58, 9F

07/18 16:59, , 10F
第一步就掉下去所以要印 0 0 S
07/18 16:59, 10F

07/18 17:01, , 11F
LOST
07/18 17:01, 11F

07/18 23:52, , 12F
ax 沒有歸零.... 歸零好好寫... 不是這樣惡搞啦
07/18 23:52, 12F

07/19 00:25, , 13F
ax歸零就GG了 XDDD AX是我用來記哪個點有人掉下去的~
07/19 00:25, 13F
※ 編輯: zodiace 來自: 61.228.128.85 (07/19 04:35)

07/19 04:35, , 14F
花了一些時間改成code2這樣 囧囧囧~看起來還是很亂~
07/19 04:35, 14F

07/19 04:54, , 15F
presentation error......
07/19 04:54, 15F

07/19 06:06, , 16F
AC....呼~
07/19 06:06, 16F

07/19 06:06, , 17F
謝謝~
07/19 06:06, 17F

07/19 10:06, , 18F
哈哈 我都暈了, 還歸零 ax 咧 XD
07/19 10:06, 18F
文章代碼(AID): #1AO3rkWA (C_and_CPP)
文章代碼(AID): #1AO3rkWA (C_and_CPP)