有些冗余的判断条件可以去掉,还有,范围是[0,9],所以新的x,y==10才出界
```cpp
#include<stdio.h>
//#include<stdlib.h>
void Rev(int&x,int&y){
if(x==1){x=0,y=-1;}
else if(y==-1){x=-1,y=0;}
else if(x==-1){x=0,y=1;}
else x=1,y=0;
}
char b[11];
int s[10][10],fx,fy,cx,cy,Fx=-1,Fy=0,Cx=-1,Cy=0;
main(){
//freopen("1.txt","w",stdout);
for(int i=0;i<10;++i){
scanf("%s",b);
for(int j=0;j<10;++j){
if(b[j]=='.')s[i][j]=0;
else if(b[j]=='*')s[i][j]=1;
else if(b[j]=='F')fx=i,fy=j,s[i][j]=0;
else cx=i,cy=j,s[i][j]=0;
}
}
int count_=0;
//printf("F:[%d,%d] C:[%d,%d]\n",fx,fy,cx,cy);
while(!(fx==cx&&fy==cy)){
//putchar(1); _sleep(300);
if(count_>=100000)return puts("0"),0;
++count_;
int nfx=fx+Fx,nfy=fy+Fy,ncx=cx+Cx,ncy=cy+Cy;
if(nfx>=0&&nfx<=9&&nfy>=0&&nfy<=9&&s[nfx][nfy]==0) fx=nfx,fy=nfy;
else Rev(Fx,Fy);
if(ncx>=0&&ncx<=9&&ncy>=0&&ncy<=9&&s[ncx][ncy]==0) cx=ncx,cy=ncy;
else Rev(Cx,Cy);
/*printf("count:%d F:[%d,%d][%d,%d] C:[%d,%d][%d,%d]\n",count_,fx,fy,Fx,Fy,cx,cy,Cx,Cy);
for(int i=0;i<10;++i,puts(""))
for(int j=0;j<10;++j){
if(i==fx&&j==fy)putchar('F');
else if(i==cx&&j==cy)putchar('C');
else putchar(s[i][j]^48);
}
*/
}
printf("%d",count_);
}
```
by cat_lover1 @ 2023-12-08 13:12:22
@cz_awa啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊谢谢谢谢了,把9改成10,直接ac了,谢谢大佬
by spindrift @ 2023-12-13 19:53:09