代码求修
查看原帖
代码求修
733980
LxSmill楼主2022/10/26 22:10
#include<bits/stdc++.h>
using namespace std;
char m[10][10],F[10][10],C[10][10];
int sfi,sfj,sci,scj,t;
char df='N',dc='N';
int main()
{
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<10;j++)
		{
			cin>>m[i][j];
			if(m[i][j]=='C')
			{
				sci=i;
				scj=j;
			}
			if(m[i][j]=='F')
			{
				sfi=i;
				sfj=j;
			}			
		}
	}
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<10;j++)
		{
			if(m[i][j]=='C') F[i][j]='.';
			else F[i][j]=m[i][j];
		}
	}
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<10;j++)
		{
			if(m[i][j]=='F') C[i][j]='.';
			else C[i][j]=m[i][j];
		}
	}
	int nfi=sfi,nfj=sfj,nci=sci,ncj=scj;
	for(;;t++)
	{
		if(df=='N')
		{
			if(F[nfi-1][nfj]=='*'||nfi-1<0) df='E';
			else
			{
				F[nfi-1][nfj]='F';
				F[nfi][nfj]='.';
				nfi--;
			}
		}
		else if(df=='E')
		{
			if(F[nfi][nfj+1]=='*'||nfj+1>9) df='S';
			else
			{
				F[nfi][nfj+1]='F';
				F[nfi][nfj]='.';
				nfj++;
			}
		}
		else if(df=='S')
		{
			if(F[nfi+1][nfj]=='*'||nfi+1>9) df='W';
			else
			{
				F[nfi+1][nfj]='F';
				F[nfi][nfj]='.';
				nfi++;
			}
		}
		else if(df=='W')
		{
			if(F[nfi][nfj-1]=='*'||nfj-1<0) df='N';
			else
			{
				F[nfi][nfj-1]='F';
				F[nfi][nfj]='.';
				nfj--;
			}
		}
		if(dc=='N')
		{
			if(C[nci-1][ncj]=='*'||nci-1<0) dc=='E';
			else
			{
				C[nci-1][ncj]='C';
				C[nci][ncj]='.';
				nci--;
			}
		}
		else if(dc=='E')
		{
			if(C[nci][ncj+1]=='*'||ncj+1>9) dc='S';
			else
			{
				C[nci][ncj+1]='C';
				C[nci][ncj]='.';
				ncj++;
			}
		}
		else if(dc=='S')
		{
			if(C[nci+1][ncj]=='*'||nci+1>9) dc='W';
			else
			{
				C[nci+1][ncj]='C';
				C[nci][ncj]='.';
				nci++;
			}
		}
		else if(dc=='W')
		{
			if(C[nci][ncj-1]=='*'||ncj-1<0) dc='N';
			else
			{
				F[nci][ncj-1]='C';
				F[nci][ncj]='.';
				ncj--;
			}
		}
		if(nfi==nci&&nfj==ncj)
		{
			cout<<t;
			break;
		}
		if(nfi==sfi&&nfj==sfj&&nci==sci&&ncj==scj&&df=='N'&&dc=='N'&&t!=0)
		{
			cout<<0;
			break;
		}						
	}
	cout<<endl;
	return 0;
}
2022/10/26 22:10
加载中...