过河卒问题
查看原帖
过河卒问题
1505354
SHIBEI楼主2024/11/27 14:28

第三和第四组测试点不过,大佬帮忙看看呗 第三组数据:20 20 4 0

#include<stdio.h>
int countPaths(int x, int y, int a, int b) {
	int dp[25][25];
	int i = 0;
	int k = 0;
	for (int i = 0; i < x; i++) {
		for (int k = 0; k < y; k++) {
			if (i == 0 && k == 0) {
				dp[i][k] = 0;
			}
			else if (i == 0 || k == 0) {
				dp[i][k] = 1;
				if (i == 0 && a == 0 && k >= b || k == 0 && b == 0 && i >= a) {
					dp[i][k] = 0;
				}
			}
			else if (i == a - 1 && k == b - 2 || i == a - 2 && k == b - 1 || i == a + 1 && k == b - 2 || i == a + 2 && k == b - 1 || i == a - 2 && k == b + 1 || i == a + 2 && k == b + 1 || i == a - 1 && k == b + 2 || i == a + 1 && k == b + 2 || i == a && k == b) {
				dp[i][k] = 0;
			}
			else {
				dp[i][k] = dp[i - 1][k] + dp[i][k - 1];
			}

		}
	}
	return dp[x - 1][y - 1];
}
int main() {
	int n, m, x, y, a, b;
	//scanf("%d%d%d%d", &n, &m, &a, &b);
	scanf("%d%d%d%d", &n, &m, &a, &b);
	x = n + 1;
	y = m + 1;
	int paths;
	paths = countPaths(x, y, a, b);
	printf("%d", paths);
	return 0;
}



2024/11/27 14:28
加载中...