这段代码
#include <bits/stdc++.h>
using namespace std;
long long vis[40][40];
long long dp[40][40];
int main(){
long long n,m,x,y;
cin >> n >> m >> x >> y;
long long passx[8]={x+1,x+1,x+2,x+2,x-1,x-1,x-2,x-2};
long long passy[8]={y+2,y-2,y+1,y-1,y+2,y-2,y+1,y-1};
vis[x][y]=1;
for (int i=0;i<8;i++){
if (passx[i]>0 || passx[i]<=n+1 || passy[i]>0 || passy[i]<=m+1) vis[passx[i]][passy[i]]=1;
}
dp[0][1] = 1;
for (int i=1;i<=n+1;i++){
for (int j=1;j<=m+1;j++){
if (vis[i-1][j-1]==1) {
continue;
}
dp[i][j]=dp[i][j-1]+dp[i-1][j];
}
}
cout << dp[n+1][m+1];
}
不开O2 60分
开O2 过了是什么原理