孩子调试修改了一下午,样例都过不去,但是又找不出错误,有没有大佬帮忙看看QAQ

P1518 [USACO2.4] 两只塔姆沃斯牛 The Tamworth Two

有些冗余的判断条件可以去掉,还有,范围是[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


|