qq_44308105 2019-08-13 00:44 采纳率: 0%
浏览 667

迷宫问题return;到底是返回到哪一步?

#include
int x1, y1, x2, y2;//起点坐标终点坐标
int min = 999999; //步数
int dir[4][2] = { -1,0,1,0,0,-1,0,1 };
int image[5][5] = { 0,0,1,1,1,
0,0,1,1,1,
0,0,0,1,1,
1,0,1,1,1,
0,0,0,0,0};
void dfs(int x, int y, int t)
{
int i, xx, yy;
if (x == x2 && y == y2)//到达终点
{
if (t {
min = t;//取最小值
}
return;
}
image[x][y] = 1;//将走过的路设1,以免下次又以为这是一条路,又走回来
for (i = 0; i {
xx = x + dir[i][0];
yy = y + dir[i][1];//生成新的方向坐标
if (xx = 5 || yy < 0 || yy >= 5 || mg[xx][yy] == 1)//超出地图,或者为墙,则要重新换个方向走
continue;
dfs(xx, yy, t + 1);//步数+1,以xx,yy为新的坐标,来进行对下次的方向进行选择又生成新的xxyy
mg[xx][yy] = 0;//这一步是当走到终点了,或者是有一个xxyy坐标上下左右都不能走,则要将刚走过的路(之前设为墙了)恢复成路
}
}
int main()
{
printf("输入起点和终点坐标");
scanf_s("%d%d%d%d", &x1, &y1, &x2, &y2);
dfs(x1, y1, 0);
printf("%d", min);
return 0;
}

min =t ;这步后面的return;
我是这样理解的:假如第一次t=4,第二次有更短的路径t=3;理论上输出min=3。但是第一次t小于9999已经终止函数输出min=4。虽然这样肯定是错的理解,哪但个地方错了大

  • 写回答

1条回答 默认 最新

  • CCCCCCCYYY_ 2019-08-13 09:06
    关注

    return不就函数结束返回了嘛..
    t不是步数吗?怎么能越走越小呢?从4走到3?肯定从小到大走的啊...

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器