天天看點

fZU_1019 貓捉老鼠

對于貓捉不到老鼠的情況,我們可以用 時間到達某一極大值 來判定,我個人用了 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;