A21810.过河卒 题解
2025-06-07 22:13:27
发布于:北京
2阅读
0回复
0点赞
递推
a[i][j]=a[i-1][j]+a[i][j-1]
#include <bits/stdc++.h>
using namespace std;
int dx[]={0,2,1,-1,-2,-2,-1,1,2};
int dy[]={0,1,2,2,1,-1,-2,-2,-1};
long long a[25][25];
int main(){
int n,m,x,y;
cin>>n>>m>>x>>y;
a[0][0]=1;
for (int i=0;i<9;i++) if (x+dx[i]>=0&&x+dx[i]<=n&&y+dy[i]>=0&&y+dy[i]<=m)a[x+dx[i]][y+dy[i]]=-1;
for (int i=1;i<=m;i++) if (a[0][i-1]!=-1&&a[0][i]!=-1) a[0][i]=a[0][i-1];
for (int i=1;i<=n;i++) if (a[i-1][0]!=-1&&a[i][0]!=-1) a[i][0]=a[i-1][0];
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
if (a[i][j]!=-1){
if (a[i-1][j]!=-1) a[i][j]+=a[i-1][j];
if (a[i][j-1]!=-1) a[i][j]+=a[i][j-1];
}
}
}
cout<<a[n][m];
return 0;
}
这里空空如也
有帮助,赞一个