RT, 在学校oj运行这个数据的时候爆炸了,不知道是为啥
16 16 2 15
这个也是
20 15 19 13
(你谷上错误的原因应该差不多( 最后一个点挂了)
#include<bits/stdc++.h>
using namespace std;
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int dx[8]={2,2,-2,-2,-1,-1,1,1};
int dy[8]={1,-1,1,-1,2,-2,2,-2};
unsigned long long f[52][52];
bool vis[52][52];
void init(int x,int y){
for(register int i=0;i<8;++i){
int nx,ny;
nx=x+dx[i];
ny=y+dy[i];
if(nx&&ny){
vis[nx][ny]=true;
}
}
vis[x][y]=true;
}
void dp_(int n,int m){
for(register int i=0;i<=n;++i){
for(register int j=0;j<=m;++j){
if(vis[i][j]!=true){
f[i+1][j]+=f[i][j];
f[i][j+1]+=f[i][j];
}
}
}
}
int n,m;
int ui,uj;
int main(){
scanf("%d%d%d%d",&n,&m,&ui,&uj);
init(ui,uj);
f[0][0]=1;
dp_(n,m);
cout<<f[n][m];
return 0;
}