全wa求助
查看原帖
全wa求助
332914
happybob楼主2021/4/11 16:38
#include <iostream>
#include <algorithm>
using namespace std;

struct Node
{
	int a, b;
};

Node fx[15] = { (1, -2), (2, -1), (2, 1), (1, 2), (-1, -2), (-2, -1), (-2, 1), (-1, 2) };
long long dp[25][25];

int main()
{
	int n, m, n2, m2;
	cin >> n >> m >> n2 >> m2;
	n += 2;
	m += 2;
	n2 += 2;
	m2 += 2;
	for (register int i = 1; i <= 8; i++)
	{
		fx[i].a += n2 - 2;
		fx[i].b += m2 - 2;
	}
	dp[0][0] = 1;
	for (register int i = 0; i <= n; i++)
	{
		for (register int j = 0; j <= m; j++)
		{
			if (i == 0 && j == 0) continue;
			if (i == 0)
			{
				dp[i][j] += dp[i][j - 1];
			}
			else if (j == 0)
			{
				dp[i][j] += dp[i - 1][j];
			}
			else dp[i][j] += max(dp[i][j], dp[i - 1][j] + dp[i][j - 1]);
			if (i == n2 - 2 && j == m2 - 2)
			{
				dp[i][j] = 0;
				continue;
			}
			for (register int x = 1; x <= 8; x++)
			{
				if (i == fx[x].a && j == fx[x].b)
				{
					dp[i][j] = 0;
					break;
				}
			}
		}
	}
	cout << dp[n - 2][m - 2] << endl;
	//system("pause");
	return 0;
}
2021/4/11 16:38
加载中...