| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
哪位好心人看看我的代码,大家给的测试都过了,但还是WA,快哭了#include<stdio.h>
#include<string.h>
struct warehouse
{
int full;
int dir;
}a[102][102];
struct numwhere
{
int i,j;
}b[102];
int crashnum1,crashnum2,crashevent;
int changedir(char dir)
{
if(dir=='N')return 4;
if(dir=='S')return 2;
if(dir=='W')return 3;
if(dir=='E')return 1;
return 0;
}
int judge(int num,int i,int j,int chang,int kuan)
{
int k;
if(i>chang||j>kuan||i<1||j<1){crashevent=1;return 0;}
if(a[i][j].full==1){crashevent=2;for(k=1;k<=102;k++){if(k!=num&&b[k].i==i&&b[k].j==j){crashnum2=k;break;}}return 0;}
a[i][j].full=1;
return 1;
}
int main()
{
int t,i,chang,kuan,num,m,n,j,k,flag,repeat;
char dire;
scanf("%d",&t);
for(i=0;i<t;i++)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
flag=1;
crashevent=0;
crashnum1=0;
crashnum2=0;
scanf("%d%d",&chang,&kuan);
scanf("%d%d",&n,&m);
for(num=1;num<=n;num++){scanf("%d%d",&j,&k);a[j][k].full=1;b[num].i=j;b[num].j=k;scanf(" %c",&dire);a[j][k].dir=changedir(dire);printf("%d",a[j][k].dir);}
for(j=0;j<m;j++){
scanf("%d %c %d",&num,&dire,&repeat);
if(flag==1)for(k=0;k<repeat;k++)
{
if(dire=='L'){
if(--a[b[num].i][b[num].j].dir<1)a[b[num].i][b[num].j].dir=4;
continue;
}
if(dire=='R')
{
if(++a[b[num].i][b[num].j].dir>4)a[b[num].i][b[num].j].dir=1;
continue;
}
if(flag==0)continue;
a[b[num].i][b[num].j].full=0;
if(a[b[num].i][b[num].j].dir==1){if(judge(num,b[num].i+1,b[num].j,chang,kuan))a[++b[num].i][b[num].j].dir=1;else flag=0;crashnum1=num;}
if(a[b[num].i][b[num].j].dir==2){if(judge(num,b[num].i,b[num].j-1,chang,kuan))a[b[num].i][--b[num].j].dir=2;else flag=0;crashnum1=num;}
if(a[b[num].i][b[num].j].dir==3){if(judge(num,b[num].i-1,b[num].j,chang,kuan))a[--b[num].i][b[num].j].dir=3;else flag=0;crashnum1=num;}
if(a[b[num].i][b[num].j].dir==4){if(judge(num,b[num].i,b[num].j+1,chang,kuan))a[b[num].i][++b[num].j].dir=4;else flag=0;crashnum1=num;}
}
}
if(flag)printf("OK\n");
else {
if(crashevent==1)printf("Robot %d crashes into the wall\n",crashnum1);
if(crashevent==2)printf("Robot %d crashes into robot %d\n",crashnum1,crashnum2);
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator