求求 蒟蒻头疼啊
查看原帖
求求 蒟蒻头疼啊
380257
esonheros楼主2020/10/4 23:11
#include<cstdio>
using namespace std;
char m[12][12];//地图; 
int f[2]={0,0};//1,0分别为人,牛; 
int x[2],y[2];//记录人,牛坐标; 
int move(int b)
{
	if(f[b]==0)
	{
		if(m[y[b]-1][x[b]]!='*')
		{
			y[b]--;
		}
		else f[b]=1;
		return 0;
	}
	if(f[b]==1)
	{
		if(m[y[b]][x[b]+1]!='*')
		{
			x[b]++;
		}
		else f[b]=2;
		return 0;
	}
	if(f[b]==2)
	{
		if(m[y[b]+1][x[b]]!='*')
		{
			y[b]++;
		}
		else f[b]=3;
		return 0;
	}
	if(f[b]==3)
	{
		if(m[y[b]][x[b]--]!='*')
		{
			x[b]--;
		}
		else f[b]=0;
		return 0;
	}
	return 0;
}
int main()
{
	for(int i=0;i<12;i++)
	{
		m[i][0]='*';
		m[0][i]='*';
		m[10][i]='*';
		m[i][10]='*';
	}
	for(int i=1;i<=10;i++)
	{
		for(int j=1;j<=10;j++)
		{
			scanf("%c",&m[i][j]);
			if(m[i][j]=='F')
			{
				x[1]=j;
				y[1]=i;
			}
			if(m[i][j]=='C')
			{
				x[0]=j;
				y[0]=i;
			}
			if(m[i][j]!='*') 
			m[i][j]='*';
		}
		char a;
		scanf("%c",&a);
		if(a=='\n') continue;
	}
	int min=0;
	while(min<=10000)//随便设个边界,测试 
	{
		min++;
		move(0);
		move(1);
		if((x[1]==x[0])&&(y[1]==y[0]))
		{
			printf("%d",min);
			return 0;
		}
	}
	printf("0");
	return 0;
} 
2020/10/4 23:11
加载中...