#include<iostream>
using namespace std;
int frr[25][25];
int grr[25][25];
void func(int x,int y){
grr[x][y]=1;
if(x>=3&&y>=2)grr[x-2][y-1]=1;
if(x>=3&&y!=23)grr[x-2][y+1]=1;
if(x>=2&&y>=3)grr[x-1][y-2]=1;
if(x>=2&&y!=23)grr[x-1][y+2]=1;
if(x!=23&&y>3)grr[x+1][y-2]=1;
if(x!=23&&y!=22)grr[x+1][y+2]=1;
if(x!=22&&y>=2)grr[x+2][y-1]=1;
if(x!=22&&y!=23)grr[x+2][y+1]=1;
}
int main(){
int n,m,x,y;
cin>>n>>m>>x>>y;
n+=1;m+=1;x+=1;y+=1;
func(x,y);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(grr[i][j]!=1){
if(i==1&&j==1)frr[i][j]=1;
if(i==1&&j>1)frr[1][j]=frr[1][j-1];
if(i>1&&j==1)frr[i][1]=frr[i-1][1];
if(i>1&&j>1)frr[i][j]=frr[i-1][j]+frr[i][j-1];
}
}
}
cout<<frr[n][m];
return 0;
}
以上代码在visual studio可以正常运行
if(x>=3&&y>=2)grr[x-2][y-1]=1;
x-2我理解为地址序列号,比如定义数组drr[3],那么命名数组只能到drr[2]
所以x-2>=1(x自加1,边界发生变化),x>=3,马的绊卒点应该没错吧
那到底是哪里出了问题?