@[Dpf20120621](/user/922781)
1.所有点坐标不能减一,因为初始是0,0点。
2.判断边界是nx、ny,而不是n、m
3.选择其他路径时,需要清空标志,否则有些路径无法走。
```
#include<bits/stdc++.h>
using namespace std;
int n,m,zx,zy,sum,bx[]={1,0},by[]={0,1};
bool v[25][25];
void dfs(int x,int y){
if(x==zx&&y==zy){
sum++;
return;
}
for(int i=0;i<2;i++){
int nx=x+bx[i];
int ny=y+by[i];
if(nx>zx||nx<0||ny>zy||ny<0||v[nx][ny])continue;
v[nx][ny]=true;
dfs(nx,ny);
v[nx][ny]=false;
}
}
int main(){
cin>>zx>>zy>>n>>m;
//n--;
//m--;
v[n][m]=true;
v[n-1][m-2]=true;
v[n-1][m+2]=true;
v[n-2][m-1]=true;
v[n-2][m+1]=true;
v[n+1][m-2]=true;
v[n+1][m+2]=true;
v[n+2][m-1]=true;
v[n+2][m+1]=true;
dfs(0,0);
cout<<sum;
return 0;
}
```
by 编码落寞 @ 2024-02-02 10:08:17
@[编码落寞](/user/557751) 谢谢
by Dpf20120621 @ 2024-02-02 10:59:26