萌新求助
查看原帖
萌新求助
447562
像素旋转楼主2021/4/12 16:36
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
const int maxN = 22;
long long dp[maxN][maxN];
int f[9][2]{ {0,0},{1,2},{1,-2},{-1,2},{-1,-2},
	{2,1},{2,-1},{-2,1},{-2,-1} };
int mx, my;
int x, y;
int main(void) {
	memset(dp, -1, sizeof(dp));
	cin >> x >> y >> mx >> my;
	for (int i = 0; i < 9; i++) {
		int temp_x = mx + f[i][0]+1, temp_y = my + f[i][1]+1;
		if (temp_x <= x+1 && temp_x >= 1 && temp_y <= y+1 && temp_y >= 1)
			dp[temp_x][temp_y] = 0;
	}
	for (int i = 1; i <= x+1; i++)dp[i][1] = 1;
	for (int j = 1; j <= y+1; j++)dp[1][j] = 1;
	for (int i = 2; i <= x+1; i++)
		for (int j = 2; j <= y+1; j++) {
			if (dp[i][j] == 0)
				continue;
			else
				dp[i][j] = max(dp[i - 1][j] + dp[i][j - 1],dp[i][j]);
		}
	cout << dp[x+1][y+1] << endl;
	return 0;
}
2021/4/12 16:36
加载中...