记录编号 43889 评测结果 AAAAAAAAAA
题目名称 [湖北2011寒假] 猫和老鼠 最终得分 100
用户昵称 GravatarTruth.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);
}