迷宫问题 原创

算法标签 dfs

题目

有如下 8*8 的迷宫

O X X X X X X X 
O O O O O X X X
X O X X O O O X
X O X X O X X O
X O X X X X X X 
X O X X O O O X
X O O O O X O O 
X X X X X X X O

其中,O 表示通路方块,X 表示障碍方块。
假设入口位置是(0,0),出口位置为右下角方块位置是(7,7)。
设计一个程序求指定入口到出口的一条迷宫路径。

方便获取的数据

"OXXXXXXX",
"OOOOOXXX",
"XOXXOOOX",
"XOXXOXXO",
"XOXXXXXX",
"XOXXOOOX",
"XOOOOXOO",
"XXXXXXXO"

答案

 XXXXXXX
  OOOXXX
X XXOOOX
X XXOXXO
X XXXXXX
X XX   X
X    X  
XXXXXXXO

代码

完整代码

#include<iostream>
#include<string.h>

using namespace std;

const int max = 8+2;
string map[] = {
"OXXXXXXX",
"OOOOOXXX",
"XOXXOOOX",
"XOXXOXXO",
"XOXXXXXX",
"XOXXOOOX",
"XOOOOXOO",
"XXXXXXXO"
};
int beginX=0,beginY=0;
int endX=7,endY=7;

int dx[]={-1,0,1,0},dy[]={0,1,0,-1};

void dfs(int x,int y){
    if(x==endX&&y==endY){
        for(int i=0;i<sizeof(map)/map[0].length();i++)
            {
            for(int j=0;j<map[0].length();j++)
                cout<<map[i][j];
            cout<<endl;
            }
    }
    else {
        for(int i=0;i<4;i++){
            if((unsigned int)x<(int)(sizeof(map)/map[0].length())
            &&(unsigned int)y<(int)(map[0].length())
            &&map[x][y]=='O'){
                map[x][y]=' ';
                dfs(x+dx[i],y+dy[i]);
                map[x][y]='O';
            }
        }
    }
}

int main(){
    
    dfs(beginX,beginY);

      
    return 0;
}
posted @   俺叫西西弗斯  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示