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 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码