蒟蒻求助 80分 一个点WA了 希望大佬们能帮助一下
查看原帖
蒟蒻求助 80分 一个点WA了 希望大佬们能帮助一下
191072
WilliamH楼主2020/12/14 16:14

代码如下

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int fx[] = {0, -2, -1, 1, 2, 2, 1, -1, -2};
const int fy[] = {0, 1, 2, 2, 1, -1, -2, -2, -1};
ull n, m, hx, hy, dp[21][21];
bool vis[21][21];
void init()
{
	for (int i = 0; i < 9; i++){
		int x = hx + fx[i], y = hy + fy[i];
		if (x < 0 || x >= n || y < 0 || y >= m) continue;
		vis[x][y] = true;
	}
	dp[0][0] = 1;
}
int main()
{
	scanf("%lld%lld%lld%lld", &n, &m, &hx, &hy);
	init();
	vis[0][0] = 1;
	for (int i = 1; i <= n; i++)
	    if (!vis[i][0])
	        dp[i][0] = dp[i - 1][0];
	for (int i = 1; i <= m; i++)
	    if (!vis[0][i])
	        dp[0][i] = dp[0][i - 1];
	for (int i = 1; i <= n; i++)
	    for (int j = 1; j <= m; j++)
	        if (!vis[i][j])
	            dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
	printf("%llu", dp[n][m]);
	return 0;
} 
2020/12/14 16:14
加载中...