状态完全相同就是死循环,移动时只操作坐标,移动用数组模拟,都考虑到了啊?怎么就是不行呢?
int main()
{
int time=0,movex[4]={-1,0,1,0},movey[4]={0,1,0,-1},dic1=0,dic2=0,i,j,x1,x2,x10,x20,y1,y2,y20,y10,dic10=0,dic20=0;
char a[12][12]={'\0'};
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
scanf("%c",&a[i][j]);
getchar();
}
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
{
if(a[i][j]=='F')
{
x10=x1=i;
y10=y1=j;
}
else if(a[i][j]=='C')
{
x20=x2=i;
y20=y2=j;
}
}
while(1)
{
switch(a[x1+movex[dic1]][y1+movey[dic1]])
{
case '.':
x1+=movex[dic1];y1+=movey[dic1];break;
case '*':case '\0':
dic1++;
dic1%=4;
break;
}
switch(a[x2+movex[dic2]][y2+movey[dic2]])
{
case '.':
x2+=movex[dic2];y2+=movey[dic2];break;
case '*':case '\0':
dic2++;
dic2%=4;
break;
}
time++;
if(x1==x2&&y1==y2)
{
cout<<time;
return 0;
}
if(x1==x10&&x20==x2&&y1==y10&&y20==y2&&dic1==dic10&&dic2==dic20)
{
cout<<"0";
return 0;
}
}
}