记录编号 |
43889 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[湖北2011寒假] 猫和老鼠 |
最终得分 |
100 |
用户昵称 |
Truth.Cirno |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2012-10-15 07:33:28 |
内存使用 |
3.30 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const short RUL[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
char map[20][20];
bool used[10][10][4][10][10][4];
int main(void)
{
freopen("cat.in","r",stdin);
freopen("cat.out","w",stdout);
int i,j,cx,cy,cd,mx,my,md,tim,tx,ty;
for (i=1;i<=10;i++)
for (j=1;j<=10;j++)
{
cin>>map[i][j];
if (map[i][j]=='C')
{
map[i][j]='.';
cx=i;
cy=j;
cd=0;
}
if (map[i][j]=='M')
{
map[i][j]='.';
mx=i;
my=j;
md=0;
}
}
tim=0;
used[cx-1][cy-1][cd][mx-1][my-1][md]=1;
while (1==1)
{
tim++;
tx=cx+RUL[cd][0];
ty=cy+RUL[cd][1];
if (map[tx][ty]=='.')
{
cx=tx;
cy=ty;
}
else
{
cd=(cd+1)%4;
}
tx=mx+RUL[md][0];
ty=my+RUL[md][1];
if (map[tx][ty]=='.')
{
mx=tx;
my=ty;
}
else
{
md=(md+1)%4;
}
if (used[cx-1][cy-1][cd][mx-1][my-1][md])
{
cout<<"-1\n";
return(0);
}
else
{
used[cx-1][cy-1][cd][mx-1][my-1][md]=1;
}
if (cx==mx&&cy==my)
{
cout<<tim<<endl;
return(0);
}
}
return(0);
}