社区讨论

60pts求调

P1002[NOIP 2002 普及组] 过河卒参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhjkzu3t
此快照首次捕获于
2025/11/04 04:17
4 个月前
此快照最后确认于
2025/11/04 04:17
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long x,y,m,n,dp[25][25];
int d[9][2]={{0,0},{-2,-1},{-1,-2},{1,-2},{2,-1},{2,1},{1,2},{-1,2},{-2,1}};
bool go[25][25];
void init(){
    for(int i=0;i<25;i++){
        for(int j=0;j<25;j++){
            go[i][j]=1;
        }
    }
}
bool check(int a,int b){
    return a>=0&&a<=n&&b>=0&&b<=m;
}
int main(){
    init();
    cin>>n>>m>>x>>y;
    go[x][y]=0;
    for(int i=1;i<=8;i++){
        if(check(x+d[i][0],y+d[i][1])) go[x+d[i][0]][y+d[i][1]]=0;
    }
    for(int i=0;i<=m;i++){
        if(go[0][i]) dp[0][i]=1;
    }
    for(int i=0;i<=n;i++){
        if(go[i][0]) dp[i][0]=1;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(go[i][j]) dp[i][j]=dp[i-1][j]+dp[i][j-1];
        }
    }
    cout<<dp[n][m];
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...