求助只有11分
查看原帖
求助只有11分
932162
Paulpeng楼主2023/4/27 11:14
#include<iostream>
#include<cstdio>
using namespace std;

char a[15][15];
int b[4][2] = {{-1, 0}, {1, 0}, {1, 0}, {0, -1}}, c[4][2] = {{-1, 0}, {1, 0}, {1, 0}, {0, -1}};

int main()
{
	int fx, fy, cx, cy, Fd = 0, Cd = 0;
	for(int i = 1;i <= 10;i++)
	{
		for(int j = 1;j <= 10;j++)
		{
			cin >> a[i][j];
			if(a[i][j] == 'F')
			{
				fx = i;
				fy = j;
			}
			if(a[i][j] == 'C')
			{
				cx = i;
				cy = j;
			}
		}
	}
	int Fx = fx, Fy = fy, Cx = cx, Cy = cy, time = 0;
	do
	{
		time++;
		if(a[Cx + c[Cd][0]][Cy + c[Cd][1]] == '*' || Cx + c[Cd][0] > 10 || Cx + c[Cd][0] < 1 || Cy + c[Cd][1] > 10 || Cy + c[Cd][1] < 1)
		{
			Cd = (Cd + 1) % 4;
			continue;
		}
		Cx += c[Cd][0];
		Cy += c[Cd][1];
		a[Cx][Cy] = 'C';
		if(a[Fx + b[Fd][0]][Fy + b[Fd][1]] == 'C')
		{
			time++;
			printf("%d", &time);
			return 0;
		}
		if(a[Fx + b[Fd][0]][Fy + b[Fd][1]] == '*' || Fx + b[Fd][0] > 10 || Fx + b[Fd][0] < 1 || Fy + b[Fd][1] > 10 || Fy + b[Fd][1] < 1)
		{
			Fd = (Fd + 1) % 4;
			continue;
		}
		Fx += b[Fd][0];
		Fy += b[Fd][1];
		a[Fx][Fy] = 'F';
	}while(!(Fx == fx && Fy == fy && Cx == cx && Cy == cy)); 
	printf("0");
	return 0;
}

2023/4/27 11:14
加载中...