fZU_1019 猫捉老鼠

对于猫捉不到老鼠的情况,我们可以用 时间到达某一极大值 来判定,我个人用了 100 0000 s

剩下应模拟就行了

 

#include #include using namespace std; int map[12][12]; int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1}; int xy[4]; void found(){ int t=0,i=0,j=0; int x,y; while(t<=10000000){ // printf("%d %d %d %d %d/n",t,xy[0],xy[2],xy[1],xy[3]); if(xy[0]==xy[2] && xy[1]==xy[3]){ printf("%d/n",t); return; } else{ x=xy[0]+dx[i]; y=xy[1]+dy[i]; if(map[x][y]==0) i=(i+1)%4; else{xy[0]=x;xy[1]=y;} x=xy[2]+dx[j]; y=xy[3]+dy[j]; if(map[x][y]==0) j=(j+1)%4; else{xy[2]=x;xy[3]=y;} } t++; } printf("0/n"); } int main(){ int i,j,k; char c; scanf("%d",&k); while(k>0){ memset(map,0,sizeof(map)); k--; for(i=1;i<=10;i++) for(j=1;j<=10;j++){ cin>>c; if(c=='m'){xy[0]=i;xy[1]=j;map[i][j]=1;continue;} if(c=='c'){xy[2]=i;xy[3]=j;map[i][j]=1;continue;} if(c=='.') map[i][j]=1; } found(); } // system("pause"); return 0; } 

你可能感兴趣的:(system,c)