#3WA,求助
查看原帖
#3WA,求助
450246
SlaineTroyard楼主2022/1/12 09:22
/*
附第3个点样例:
输入: 20 20 4 0
输出: 56477364570
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll x,y,hx,hy;
ll dp[22][22]={};
bool h[22][22]={};
const int dx[8]={1,2,-2, 1,-1,-2,-1, 2},
          dy[8]={2,1, 1,-2,-2,-1, 2,-1};
void print() // 调试用
{
	for(int i=1;i<=x;i++)
	{
		for(int j=1;j<=y;j++)
		{
			cout << dp[i][j] << " ";
		}
		cout << endl;
	}
}
int main()
{
	scanf("%d %d %d %d",&x,&y,&hx,&hy);
	x++,y++;
	// 设置马的控制点
	h[hx+1][hy+1]=1;
	for(int i=0;i<8;i++)
		h[hx+dx[i]+1][hy+dy[i]+1]=1;
	// DP
	for(int i=1;i<=x;i++)
	{
		for(int j=1;j<=y;j++)
		{
			if(i==1 && j==1)
			{
				dp[i][j]=1;
				continue;
			}
			if(h[i][j])
				continue;
			dp[i][j]=dp[i-1][j]+dp[i][j-1];
		}
	}
	//print();
	cout << dp[x][y] << endl;
	return 0;
}


2022/1/12 09:22
加载中...