作者zodiace (GP500)
看板C_and_CPP
标题[ACM ] 118
时间Fri Jul 17 16:59:25 2009
题目:
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
1F:推 ledia:sample input 就不对了耶 07/17 17:10
2F:→ zodiace:我怎麽测出来是对的? 07/17 17:21
※ 编辑: zodiace 来自: 220.139.71.91 (07/17 17:31)
3F:推 ledia:为什麽同样变数回圈最後又宣告一次呀 07/17 23:14
4F:→ ledia:你的 switch 里的 if, 有一组写错了 07/17 23:15
5F:→ zodiace:我知道这白痴XDD 不过我是因为不知道有什麽好方法初始化这 07/18 03:17
6F:→ zodiace:些变数才这样用…… 结果改正了还是WA~囧囧 07/18 03:17
7F:推 ledia:如果第一步就掉下去你会印什麽 ? 比如初始是 0 0 S 07/18 12:51
8F:→ ledia:第一步是 F 07/18 12:51
※ 编辑: zodiace 来自: 61.228.128.85 (07/18 16:58)
9F:→ zodiace:改了一下 不知道有没有比较好 囧囧囧 07/18 16:58
10F:→ zodiace:第一步就掉下去所以要印 0 0 S 07/18 16:59
11F:→ zodiace: LOST 07/18 17:01
12F:推 ledia:ax 没有归零.... 归零好好写... 不是这样恶搞啦 07/18 23:52
13F:→ zodiace:ax归零就GG了 XDDD AX是我用来记哪个点有人掉下去的~ 07/19 00:25
※ 编辑: zodiace 来自: 61.228.128.85 (07/19 04:35)
14F:→ zodiace:花了一些时间改成code2这样 囧囧囧~看起来还是很乱~ 07/19 04:35
15F:→ zodiace:presentation error...... 07/19 04:54
16F:→ zodiace:AC....呼~ 07/19 06:06
17F:→ zodiace:谢谢~ 07/19 06:06
18F:推 ledia:哈哈 我都晕了, 还归零 ax 咧 XD 07/19 10:06