~~咦这道题好像就是我说的吃鼠标回血的那道来着~~
以下是改错经过~~Ice啊Ice我建议你和我一样学会加输出语句来找错~~:
加了句`cout<<x<<" "<<y<<' '<<step<<' '`<<tili<<endl;发现第一次“1(x) 1(y) 0(step) 6(tili)”之后(除了-1)就没有输出了,说明还没达到下一个递归
还有我仔细一看:
上面:
```cpp
const int dx[]={0,0,1,-1};
const int dy[]={1,-1,0,0};
```
到了下面循环的时候:
```cpp
for(int i=1;i<=4;i++){
int tx=x+dx[i],ty=y+dy[i];
dfs(tx,ty,step+1,tili-1);
}
```
不合理啊……
改完之后在for里加了句`cout<<tx<< ""<<ty<<endl;`之后并未输出,说明连for也没执行……
然后改了下判断:
```cpp
if(tili<=1||step>ans||Map[x][y]==0||step>=a[x][y][tili]){
cout<<"return"<<endl;
return;
}
```
发现直接回了个retrun,啥都没干
真凶:`Map[x][y]==0`
上面全局变量默认为0而你这直接判断肯定直接返回啊
~~代码懒得改你自己再将就着改吧,实在不行我再找找~~
by Anoif @ 2023-11-19 20:53:28
@[Anoif](/user/584596) 啊对就因为你说了我才去做了。
但我的Map不是用来输入的吗……
by Ice_rnfmabj @ 2023-11-19 20:57:39
@[Ice_rnfmabj](/user/695943) 那个是用来排障碍的……
by Ice_rnfmabj @ 2023-11-19 21:00:44
@[Ice_rnfmabj](/user/695943) az……你自己看着办喽剩下的我搞不了(光速逃)
by Anoif @ 2023-11-19 21:01:58
@[Ice_rnfmabj](/user/695943) ~~艾玛眼瞎了~~
嗯……不是Max问题是最后一个判断的`a[x][y][tili]`的问题,你这第一回递归也没赋值,第一回step=0,而a也=0,自然return(确信)
by Anoif @ 2023-11-19 21:14:31
@[Anoif](/user/584596) 啊是的,我原本打算睡觉突然因为这个惊醒起来了
~~但我一搞还是错的~~
by Ice_rnfmabj @ 2023-11-19 21:31:52
@[Ice_rnfmabj](/user/695943)
for(int i=1;i<=4;i++){
int tx=x+dx[i],ty=y+dy[i];
dfs(tx,ty,step+1,tili-1);
}
你确定这个地方不应该写0~3吗。
by Edward2019 @ 2023-11-20 10:49:38
@[Edward2019](/user/274347) 额改了但还是不对……
by Ice_rnfmabj @ 2023-11-25 14:37:09
```cpp
for(int i=1;i<=4;i++){
int tx=x+dx[i],ty=y+dy[i];
dfs(tx,ty,step+1,tili-1);
}
```
///开0,<4试一下
by profesor @ 2023-11-25 14:53:42
```
memset(book,0x3f,sizeof(book));
dfs(sx,sy,0,6);
if(ans<INF)cout<<ans;
else cout<<"-1";
```
?
by profesor @ 2023-11-25 14:56:33