大佬,我1002不行了: https://www.luogu.com.cn/problem/P1002 快来帮帮菜鸟吧:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,x,y;
int dp[21][21]; //xy
int ax[8]={1,2,2,1,-1,-2,-2,-1};
int ay[8]={2,1,-1,-2,-2,-1,1,2};
int main()
{
memset(dp,0,sizeof(dp));
cin>>n>>m>>x>>y; //x,y,x,y
dp[x][y]=-1;
for (int i=0;i<=7;i++)
{
int x1=x+ax[i];
int y1=y+ay[i];
if (!(x1>-1&&x1<n+1&&y1>-1&&y1<m+1)) continue;
dp[x1][y1]=-1;
}
int i=0;
while (i<=n&&dp[i][0]!=-1){ dp[i][0]=1;i++;}
i=0;
while (i<=m&&dp[0][i]!=-1) {dp[0][i]=1;i++;}
for (int i=1;i<=n;i++) {
for (int j=1;j<=m;j++){
if (dp[i][j]!=-1){
dp[i][j]=max(dp[i][j-1],0)+max(dp[i-1][j],0);
}
}
}
cout<<dp[n][m]<<endl;
return 0;
}