为什么我的搜索答案总是0?

P1002 [NOIP2002 普及组] 过河卒

@[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


|