89分求助
查看原帖
89分求助
941801
louie2011楼主2024/7/23 21:43
#include<bits/stdc++.h>
using namespace std;
int fx,fy,fdir,cx,cy,cdir,ans;
char arr[15][15];
int dirx[4]={-1,0,1,0};
int diry[4]={0,1,0,-1};
bool zt[160005];
int main()
{
	for (int i=0;i<=11;i++) arr[i][0]='*',arr[i][11]='*';
    for (int i=1;i<=11;i++) arr[0][i]='*',arr[11][i]='*';
	for(int i=1;i<=10;i++)
	{
		for(int j=1;j<=10;j++)
		{
			cin>>arr[i][j];
			if(arr[i][j]=='F')
			{
				fx=i;
				fy=j;
				fdir=0;
			}
			if(arr[i][j]=='C')
			{
				cx=i;
				cy=j;
				cdir=0;
			}
		}
	}
	while(1)
	{
		ans++;
		int hash=fx+fy*10+cx*100+cy*1000+fdir*10000+cdir*40000;
//		cout<<fx<<" "<<fy<<" "<<cx<<" "<<cy<<endl;
		if(zt[hash])
		{
			cout<<0;
			return 0;
		}
		zt[hash]=1;
		int newx=fx+dirx[fdir],newy=fy+diry[fdir];
		if(arr[newx][newy]=='*')
		{
			fdir=(fdir+1)%4;
		}
		else
		{
			fx=newx;
			fy=newy;
		}
		newx=cx+dirx[cdir],newy=cy+diry[cdir];
		if(arr[newx][newy]=='*')
		{
			cdir=(cdir+1)%4;
		}
		else
		{
			cx=newx;
			cy=newy;
		}
		if(fx==cx && fy==cy)
		{
			cout<<ans;
			return 0;
		}
	}
	return 0;
}
2024/7/23 21:43
加载中...