60分
查看原帖
60分
197498
Jaim楼主2020/8/16 19:52
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    unsigned long long a,b,n,m,q[21][21]={0};
    bool ma[21][21]={0};
    scanf("%llu%llu%llu%llu",&n,&m,&a,&b);
    //边界
    for(unsigned long long i=0;i<=n;i++) q[i][0]=1;  
    for(unsigned long long i=0;i<=m;i++) q[0][i]=1;
    //马的控制点
    ma[a][b]=1;      q[a][b]=0;                      
    ma[a+1][b+2]=1;  q[a+1][b+2]=0;
    ma[a-1][b+2]=1;  q[a-1][b+2]=0;
    ma[a+2][b+1]=1;  q[a+2][b+1]=0;
    ma[a-2][b+1]=1;  q[a-2][b+1]=0;
    ma[a+1][b-2]=1;  q[a+1][b-2]=0;
    ma[a-1][b-2]=1;  q[a-1][b-2]=0;
    ma[a+2][b-1]=1;  q[a+2][b-1]=0;
    ma[a-2][b-1]=1;  q[a-2][b-1]=0;
    //递推 
    for(unsigned long long i=1;i<=n;i++)             
    for(unsigned long long j=1;j<=m;j++)
    if(ma[i][j]==0) q[i][j]=q[i-1][j]+q[i][j-1];
    printf("%llu",q[n][m]);
    return 0;
} 
2020/8/16 19:52
加载中...