求助奆佬——过河卒
查看原帖
求助奆佬——过河卒
823773
_sh1kong_楼主2022/11/25 08:54
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,horxx,horyy;
int board[22][22];
int f[22][22];//f[i][j]表示从点(1,1)出发到点(i,j)的路径总数 
int horx[12]={2,1,-1,-2,-2,-1,1,2},
	hory[12]={1,2,2,1,-1,-2,-2,-1};
signed main()
{
	scanf("%lld%lld%lld%lld",&n,&m,&horxx,&horyy);
	for(int i=0;i<8;i++)
	{
		int xx,yy;
		xx=horxx+horx[i];
		yy=horyy+hory[i];
		if(xx>=0&&yy>=0&&xx<=n&&yy<=m) board[xx][yy]=1;
	}
	for(int i=0;i<=n;i++)
	{
		for(int j=0;j<=m;j++)
		{
			if(board[i][j]) f[i][j]=0;
			else if(i==0&&j==0) f[i][j]=1;
			else if(i==0&&j!=0) f[i][j]=f[i][j-1];
			else if(j==0&&i!=0) f[i][j]=f[i-1][j];
			else f[i][j]=f[i][j-1]+f[i-1][j];
		}
	}
	printf("%lld\n",f[n][m]);
}

样例都没过

2022/11/25 08:54
加载中...