DP萌新求助
查看原帖
DP萌新求助
616964
Adolfo_North楼主2022/12/27 07:22
#include<iostream>
using namespace std;
const int fx[8]={-2,-1,1,2,2,1,-1,-2};
const int fy[8]={1,2,2,1,-1,-2,-2,-1};
bool a[21][21];
long long f[21][21];
int main()
{
	int bx,by,mx,my;
	cin>>bx>>by>>mx>>my;
	a[mx][my]=1;
	//预处理棋盘边界 
	for(int i=0;i<=bx;i++) f[i][0]=1;
	for(int i=0;i<=by;i++) f[0][i]=1;
	f[mx][my]=0;
	//处理马不可以走的点 
	for(int i=0;i<8;i++) {
		int px=mx+fx[i],py=my+fy[i];
		if(px<0||px>bx||py<0||py>by) continue;
		a[px][py]=1;
		f[px][py]=0;
	}
	///*
	
	//*/dp 
	for(int i=1;i<=bx;i++){
		for(int j=1;j<=by;j++){
			if(a[i][j]) continue;
			f[i][j]=f[i-1][j]+f[i][j-1];
 		}
	}
	cout<<f[bx][by];
    return 0;
}

2022/12/27 07:22
加载中...