只过了两个求大佬帮助。
查看原帖
只过了两个求大佬帮助。
892247
No_Error楼主2022/11/30 12:55
typedef struct {
	int x;
	int y;
}C1, F1;
void print(char[12][12]);
int main()
{
	C1 C;  F1 F;
	char map[12][12];
	for (int i = 0; i < 12; i++)
		for (int j = 0; j < 12; j++)
			map[i][j] = '*';
	for (int i = 1; i <= 10; i++)
		for (int j = 1; j <= 10; j++)
		{
			cin >> map[i][j];
			if (map[i][j] == 'C')
			{
				C.x = i; C.y = j;
			}
			if (map[i][j] == 'F')
			{
				F.x = i; F.y = j;
			}
		}
	int a = 0,b = 0;
	int num = 0;
	int directionF = 1, directionC = 1;
	while ((F.x != C.x) || (F.y != C.y))
	{
		if (directionF == 1)
		{
			if (map[F.x-1][F.y] != '*')
			{
				map[F.x][F.y] = '.';
				F.x--;
				map[F.x][F.y] = 'F';
				a = 0; 
			}
			else
			{
				directionF = 2;
				a++;
				goto C;
			}

		}
		else if (directionF == 2)
		{
			if (map[F.x][F.y+1] != '*')
			{
				map[F.x][F.y] = '.';
				F.y++;
				map[F.x][F.y] = 'F';
			}
			else
			{
				directionF = 3; a++;
				goto C;
			}
		}
		else if (directionF == 3)
		{
			if (map[F.x+1][F.y] != '*')
			{
				map[F.x][F.y] = '.';
				F.x++;
				map[F.x][F.y] = 'F';
			}
			else
			{
				directionF = 4; a++;
				goto C;
			}
		}
		else if (directionF == 4)
		{
			if (map[F.x][F.y-1] != '*')
			{
				map[F.x][F.y] = '.';
				F.y--;
				map[F.x][F.y] = 'F';
			}
			else
			{
				directionF = 1; a++;
				goto C;
			}
		}
		if (a == 4)
		{
			cout << 0; break;
		}
	C:
		num++;
		if (directionC == 1)
		{
			if (map[C.x-1][C.y] != '*')
			{
				map[C.x][C.y] = '.';
				C.x--;
				map[C.x][C.y] = 'C';
			}
			else
			{
				directionC = 2; b++;
				continue;
			}
		}
		else if (directionC == 2)
		{
			if (map[C.x][C.y+1] != '*')
			{
				map[C.x][C.y] = '.';
				C.y++;
				map[C.x][C.y] = 'C';
			}
			else
			{
				directionC = 3; b++;
				continue;
			}
		}
		else if (directionC == 3)
		{
			if (map[C.x+1][C.y] != '*')
			{
				map[C.x][C.y] = '.';
				C.x++;
				map[C.x][C.y] = 'C';
			}
			else
			{
				directionC = 4; b++;
				continue;
			}
		}
		else if (directionC == 4)
		{
			if (map[C.x][C.y-1] != '*')
			{
				map[C.x][C.y] = '.';
				C.y--;
				map[C.x][C.y] = 'C';
			}
			else
			{
				directionC = 1; b++;
				continue;
			}
		}
		if (b == 4)
		{
			cout << 0; break;
		}
		//print(map);

	}
	cout << num;
	return 0;
}

2022/11/30 12:55
加载中...