11pts繁花丛,求大佬帮忙!pls!!!
查看原帖
11pts繁花丛,求大佬帮忙!pls!!!
807670
francais楼主2023/9/29 12:35
#include<iostream>
using namespace std;
int drcf,drcc,nxtfx,nxtfy,nxtcx,nxtcy,stcx,stcy,stfx,stfy;
char c[12][12];
void init()
{
	for(int i=0;i<12;i++)
	{
		for(int j=0;j<12;j++)
		{
			if(i==0 or i==11 or j==0 or j==11) c[i][j]='*';
		}
	}
	for(int i=1;i<=10;i++)
	{
		for(int j=1;j<=10;j++)
		{
			cin>>c[i][j];
			if(c[i][j]=='C')
			{
				nxtcx=stcx=i;
				nxtcy=stcy=j;
			}
			if(c[i][j]=='F')
			{
				nxtfx=stfx=i;
				nxtfy=stfy=j;
			}
		}
	}
}
int dfs()
{
	int cx=stcx,cy=stcy,fx=stfx,fy=stfy,ans=0;
	while(cx!=fx or cy!=fy)
	{
		if(ans>200000) return 0;
		switch(drcc)
		{
			case 0:
				nxtcy--;
				break;
			case 1:
				nxtcx++;
				break;
			case 2:
				nxtcy++;
				break;
			case 3:
				nxtcx--;
				break;
		}
		switch(drcf)
		{
			case 0:
				nxtfy--;
				break;
			case 1:
				nxtfx++;
				break;
			case 2:
				nxtfy++;
				break;
			case 3:
				nxtfx--;
				break;
		}
		if(c[nxtfx][nxtfy]=='*')
		{
			switch(drcf)
			{
				case 0:
					nxtfx++;
					nxtfy++;
					break;
				case 1:
					nxtfx--;
					nxtfy++;
					break;
				case 2:
					nxtfx--;
					nxtfy--;
					break;
				case 3:
					nxtfx++;
					nxtfy--;
					break;
			}
			drcf=(drcf+1)%4;
		}
		else
		{
			fx=nxtfx;
			fy=nxtfy;
		}
		if(c[nxtcx][nxtcy]=='*')
		{
			switch(drcc)
			{
				case 0:
					nxtcx++;
					nxtcy++;
					break;
				case 1:
					nxtcx--;
					nxtcy++;
					break;
				case 2:
					nxtcx--;
					nxtcy--;
					break;
				case 3:
					nxtcx++;
					nxtcy--;
					break;
			}
			drcc=(drcc+1)%4;
		}
		else
		{
			cx=nxtcx;
			cy=nxtcy;
		}
		ans++;
	}
	return ans;
}
int main()
{
	init();
	nxtcx=stcx;
	nxtcy=stcy;
	nxtfx=stfx;
	nxtfy=stfy;
	cout<<dfs();
	return 0;
}
2023/9/29 12:35
加载中...