對于貓捉不到老鼠的情況,我們可以用 時間到達某一極大值 來判定,我個人用了 100 0000 s
剩下應模拟就行了
#include<stdio.h>
#include<iostream>
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;
}