qq_33259658 2017-03-26 04:02 采纳率: 0%
浏览 902
已结题

c++迷宫问题(递归)输出异常

#include
using namespace std;
int R1[40] ;//储存结果用于输出
int R2[40] ;
int c = 0;
int cou = 0;
int Maze[9][9] = {
0,0,0,0,0,0,1,1,0,
1,0,1,1,0,0,1,1,0,
0,0,1,0,1,0,1,1,0,
0,1,1,1,0,0,1,1,0,
0,1,0,1,0,0,1,0,0,
0,1,0,1,0,0,0,0,0,
0,1,0,0,1,0,1,0,0,
0,1,0,0,1,1,0,0,0,
0,1,0,0,1,1,1,0,0
};//初始化迷宫
int visited[9][9];//访问权限 0为未访问
//走迷宫
void DFS(int m, int n)
{
if (m >= 0 && n >= 0 && m <= 8 && n <= 8) {//限制有效数据范围
if (visited[m][n] == 0 && Maze[m][n] == 0)//判断条件:1.该单元格未访问过 2.该单元格是通路
{

            R1[c] = m + 1;//存入结果
            R2[c] = n + 1;
            c++;//R数组下标:记录长度
            visited[m][n] = 1;
            if (visited[8][8] == 1) {
            //输出结果
            for (int i = 0; i < 40; i++)
                if (R1[i] != -1 && R1[i] != 0 && R2[i] != -1 && R2[i] != 0)
                    cout << "(" << R1[i] << "," << R2[i] << ") ";
            cout << endl;
            c--;
            R1[c] = 0;
            R2[c] = 0;
            visited[m][n] = 0;
            return;
        }
        DFS(m, n + 1);//向右查找
        DFS(m + 1, n);//向下查找
        DFS(m - 1, n);//向上查找
        DFS(m, n - 1);//向左查找
     //执行结束进行退出操作
        c--;
        R1[c] = 0;
        R2[c] = 0;
        visited[m][n] = 0;
    }
}

}
void main()
{
cout << "迷宫走法如下:" << endl;
DFS(0, 0);//入口(1,1)
}
储存结果的数组
这俩个数组在过小的情况下会有这样的输出:
无序的输出
而在数组足够大的情况下能够正常的输出所有的走法:
正常的输出
请问为什么会这样子?

  • 写回答

1条回答

  • devmiao 2017-03-26 15:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献