测试点1,5WA,求解
查看原帖
测试点1,5WA,求解
1284582
F_L_Bird楼主2024/3/15 16:53
#include<bits/stdc++.h>
using namespace std;

int dir[8][2] = {{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
long long dp[25][25];
	
long long solve(int m,int n,int cx,int cy){
	memset(dp,-1,sizeof(dp));
	dp[cx][cy] = 0;
	for(int i = 0;i < 8;i += 1)
	{
		if(cx + dir[i][0] >= 0 && cy + dir[i][1] >= 0)
		{
			dp[cx + dir[i][0]][cy + dir[i][1]] = 0;
		}
	}
	for(int i = 0;i <= m;i += 1)
	{
		for(int j = 0;j <= n;j += 1)
		{
			if(dp[i][j] != 0)
			{
				if(i == 0 && j == 0)
				{
					dp[i][j] = 1;
				}
				else 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] = dp[i][j - 1] + dp[i - 1][j];
				}
			}
		}
	}
	return dp[m][n];
}

int main(){
	int m,n,cx,cy;
	cin>>n>>m>>cx>>cy;
	cout<<solve(m,n,cx,cy);
	return 0;
}
2024/3/15 16:53
加载中...