60pts求助
查看原帖
60pts求助
726902
bcbgszyzh楼主2024/11/29 11:40
#include<bits/stdc++.h>
#define int long long
int dp[1010][1010];
int dx[]={0,-2,-2,-1,-1,1,1,2,2},dy[]={0,-1,1,-2,2,-2,2,-1,1};
signed main(){
    int n,m,h1,h2;
    scanf("%lld%lld%lld%lld",&n,&m,&h1,&h2);
    memset(dp,-1,sizeof dp);
    for(int i=0;i<9;++i){
        if(h1+dx[i]<0||h1+dx[i]>n||h2+dy[i]<0||h2+dy[i]>m)continue;
        dp[h1+dx[i]][h2+dy[i]]=0;
    }
    for(int i=0;i<=n;++i){
        if(dp[i][0]==-1){
            dp[i][0]=1;
        }
    }
    for(int i=0;i<=m;++i){
        if(dp[0][i]==-1){
            dp[0][i]=1;
        }
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            if(dp[i][j]==-1){
                dp[i][j]=dp[i][j-1]+dp[i-1][j];
            }
        }
    }
    printf("%lld",dp[n][m]);
	return 0;
}
2024/11/29 11:40
加载中...