猫捉老鼠(1019)

来源:互联网 发布:有声朗读软件 编辑:程序博客网 时间:2024/04/28 22:48

#include<stdio.h>

void main()
{
int a,i,j,n,ii,jj,iii,jjj,c,d,cout;char b[13][13],s;

while(scanf("%d",&a)!=EOF)
{

for(n=0;n<a;n++)
{scanf("%c",&s);

for(i=1;i<=10;i++)
for(j=1;j<=11;j++)
{scanf("%c",&b[i][j]);
if(b[i][j]=='m')
{ii=i;jj=j;}
if(b[i][j]=='c')
{iii=i;jjj=j;}}



c=1;d=1;cout=0;
for(i=0;i<=100000;i++)

{ switch(d)


{case 1:
{if(iii>1&&b[iii-1][jjj]!='*')
iii=iii-1;
else d=d+1;break;}
case 2:
{if(jjj<10&&b[iii][jjj+1]!='*')
jjj=jjj+1;
else d=d+1;break;}
case 3:
{if(iii<10&&b[iii+1][jjj]!='*')
iii=iii+1;
else d=d+1;break;}
case 4:
{if(jjj>1&&b[iii][jjj-1]!='*')
jjj=jjj-1;
else d=d-3;break;}}

switch(c){case 1:
{if(ii>1&&b[ii-1][jj]!='*')
ii=ii-1;
else c=c+1;break;}
case 2:
{if(jj<10&&b[ii][jj+1]!='*')
jj=jj+1;
else c=c+1;break;}
case 3:
{if(ii<10&&b[ii+1][jj]!='*')
ii=ii+1;
else c=c+1;break;}
case 4:
{if(jj>1&&b[ii][jj-1]!='*')
jj=jj-1;
else c=c-3;break;}}


      
cout=cout+1;
if(ii==iii&&jjj==jj)break;}
if(i<100000)
printf("%d/n",cout);else printf("0/n");}}}

 

 

这道题蛮简单的,主要要注意空格的处理方式,否则经常提交不成功!!

原创粉丝点击