60分,求助!(DP)
查看原帖
60分,求助!(DP)
1436220
tinalu楼主2024/10/10 08:56

#include <cstdio>  
using namespace std;  
int bx, by, cx, cy;  
int a[25][25];  
long long f[25][25];  
int n[8][2] = {{-2, -1}, {-2, 1}, {-1, 2}, {1, 2},{2, 1}, {2, -1}, {1, -2}, {-1, -2}};  

int main() {
        scanf("%d%d%d%d", &bx, &by, &cx, &cy);
	for (int i = 0; i < 8; i++)
		n[i][0] += cx, n[i][1] += cy;
	for (int i = 0; i <= bx; i++)
		for (int j = 0; j <= by; j++)
			if (i == cx && j == cy)
				a[i][j] = 1;
			else
				for (int k = 0; k < 8; k++)
					if (i == n[k][0] && j == n[k][1]) {
						a[i][j] = 1;
						break;
					}
	for (int i = 0; i <= bx; i++)
		if (!a[i][0])
			f[i][0] = 1;
		else
			f[i][0] = 0;
	for (int j = 0; j <= by; j++)
		if (!a[0][j])
			f[0][j] = 1;
		else
			f[0][j] = 0;
	for (int i = 1; i <= bx; i++)
		for (int j = 1; j <= by; j++)
			if (!a[i][j])
				f[i][j] = 0LL + f[i - 1][j] + f[i][j - 1];
			else
				f[i][j] = 0;
	printf("%lld\n", f[bx][by]);
	return 0;
}
  
``` ```
2024/10/10 08:56
加载中...