本地能过,oj上六个WA四个RE 参考题解后仅将输入改为cin后就AC了(刚注册看不到评测用数据)
求大佬解惑
这里单独贴出输入部分代码(其余部分不影响AC),篇末附上完整代码
char m[20][20];
int dirx[4]={-1,0,1,0},diry[4]={0,1,0,-1};
struct obj
{
int x;
int y;
int side;
}f={},c={};//前置定义部分
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
{
m[i][j]=getchar();
if(m[i][j]=='F')
{
f.x=i;
f.y=j;
f.side=0;
m[i][j]='.';
}
if(m[i][j]=='C')
{
c.x=i;
c.y=j;
c.side=0;
m[i][j]='.';
}
}
getchar();
}
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
{
cin>>m[i][j];
if(m[i][j]=='F')
{
f.x=i;
f.y=j;
f.side=0;
m[i][j]='.';
}
if(m[i][j]=='C')
{
c.x=i;
c.y=j;
c.side=0;
m[i][j]='.';
}
}
}
#include<bits/stdc++.h>
using namespace std;
char m[20][20];
int dirx[4]={-1,0,1,0},diry[4]={0,1,0,-1};
struct obj
{
int x;
int y;
int side;
}f={},c={};
obj mov(obj a)
{
obj o=a;
if(m[o.x+dirx[o.side]][o.y+diry[o.side]]=='*')
{
o.side++;
o.side%=4;
}
else
{
o.x+=dirx[o.side];
o.y+=diry[o.side];
}
return o;
}
int main()
{
for(int i=0;i<=11;i++)
{
m[i][0]='*';
m[i][11]='*';
m[0][i]='*';
m[11][i]='*';
}
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
{
m[i][j]=getchar();
if(m[i][j]=='F')
{
f.x=i;
f.y=j;
f.side=0;
m[i][j]='.';
}
if(m[i][j]=='C')
{
c.x=i;
c.y=j;
c.side=0;
m[i][j]='.';
}
}
getchar();
}
int t=0,temp=0;
while(temp<=1000)
{
f=mov(f);
c=mov(c);
t++;
if((f.x==c.x)&&(f.y==c.y))
{
cout<<t;
return 0;
}
temp++;
}
cout<<0;
return 0;
}