60分, 3/4 沒通過
查看原帖
60分, 3/4 沒通過
1118234
sc_lui95楼主2024/1/14 16:28
#include <iostream>
#include <cmath>
using namespace std;
struct coor
{
	int x, y;
};
int main()
{
	coor Destination;
	coor Horse[9];
	cin >> Destination.x >> Destination.y;
	cin >> Horse[0].x >> Horse[0].y;
	Horse[2].x = Horse[0].x + 2; Horse[2].y = Horse[0].y + 1;
	Horse[3].x = Horse[0].x + 2; Horse[3].y = Horse[0].y - 1;
	Horse[1].x = Horse[0].x + 1; Horse[1].y = Horse[0].y + 2;
	Horse[4].x = Horse[0].x + 1; Horse[4].y = Horse[0].y - 2;
	Horse[6].x = Horse[0].x - 2; Horse[6].y = Horse[0].y - 1;
	Horse[7].x = Horse[0].x - 2; Horse[7].y = Horse[0].y + 1;
	Horse[5].x = Horse[0].x - 1; Horse[5].y = Horse[0].y - 2;
	Horse[8].x = Horse[0].x - 1; Horse[8].y = Horse[0].y + 2;
	int Map[21][21] = {};
	Map[0][0] = 1;
	for (int i = 0; i < 9; ++i)
	{
		if (Horse[i].y >= 0 && Horse[i].x >= 0 && Horse[i].y<=20 && Horse[i].x<=20)
			Map[Horse[i].x][Horse[i].y] = -1;
	}
	for (int i = 0; i <= Destination.x; ++i)
	{
		for (int j = 0; j <= Destination.y; ++j)
		{
			if (Map[i][j] == -1 || (Map[i - 1][j] == -1 && Map[i][j - 1] == -1)
				|| i == 0 && j == 0 || (Map[i - 1][0] == -1 && j == 0) || (Map[0][j - 1] == -1 && i == 0))
				continue;
			else if (Map[i - 1][j] == -1 || i == 0)
				Map[i][j] = Map[i][j - 1];
			else if (Map[i][j - 1] == -1 || j == 0)
				Map[i][j] = Map[i - 1][j];
			else
			{
				Map[i][j] = Map[i - 1][j] + Map[i][j - 1];
			}
		}
	}

	cout << Map[Destination.x][Destination.y];

	return 0;
}
2024/1/14 16:28
加载中...