【NOIP2002】~过河卒
程序员文章站
2022-06-12 10:29:41
...
#include<bits/stdc++.h>
using namespace std;
long long F[25][25];
int dir[8][2]={{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
int main(){
int n,m,x,y;
scanf("%d %d %d %d",&n,&m,&x,&y);
F[x][y]=-1;
for(int i=0;i<8;i++){
if(x+dir[i][0]>=0&&x+dir[i][0]<=n&&y+dir[i][1]>=0&&y+dir[i][1]<=m){
F[x+dir[i][0]][y+dir[i][1]]=-1;
}
}
if(F[0][0]!=-1){
F[0][0]=1;
for(int i=0;i<=n;i++){
for(int j=0;j<=m;j++){
if(F[i][j]!=-1){
if(F[i-1][j]!=-1&&i) {
F[i][j]+=F[i-1][j];
}
if(F[i][j-1]!=-1&&j) {
F[i][j]+=F[i][j-1];
}
}
}
}
printf("%lld",F[n][m]);
}
else{
printf("0");
}
return 0;
}
啊~太棒了,今天又水了一道题!!!
下一篇: 关于golang的迷宫广度优先算法