zoukankan      html  css  js  c++  java
  • 回溯法迷宫问题

    迷宫问题
     1 #include <iostream>
    2 using namespace std;
    3
    4 int flag = 0;
    5 const int m = 5;
    6 const int n = 5;
    7 int a[m][n] = {
    8 {0,0,0,1,1},
    9 {1,0,0,0,0},
    10 {0,1,1,0,1},
    11 {1,0,0,0,0},
    12 {0,1,0,1,0}
    13 };
    14 void search(int x,int y)
    15 {
    16 if((x==m-1)&&(y==n-1)) //当到达出口时,设置标志为1
    17 flag = 1;
    18 else
    19 {
    20 a[x][y] = 1;
    21 if( (!flag) && (y!=n-1) && (a[x][y+1]==0) ) search(x,y+1); //向右走
    22 if( (!flag) && (x!=m-1) && (a[x+1][y]==0) ) search(x+1,y); //向下走
    23 if( (!flag) && (y!=0) && (a[x][y-1]==0) ) search(x,y-1); //向左走
    24 if( (!flag) && (x!=0) && (a[x-1][y]==0) ) search(x-1,y); //向上走
    25 }
    26 a[x][y] = 0;
    27 if(flag == 1) //因为标志为全局变量,故找到出口后,将根据标志位(flag=1)在回溯时用7来设置目标通路
    28 a[x][y]=7;
    29 }
    30
    31 int main()
    32 {
    33 int i,j;
    34
    35 cout<<"迷宫地图(0表示通路):"<<endl;
    36 for(i=0;i<m;i++)
    37 {
    38 for(j=0;j<n;j++)
    39 cout<<a[i][j];
    40 cout<<endl;
    41 }
    42 cout<<endl;
    43
    44 search(0,0);
    45
    46 cout<<"迷宫出路(由7表示):"<<endl;
    47 for(i=0;i<m;i++)
    48 {
    49 for(j=0;j<n;j++)
    50 cout<<a[i][j];
    51 cout<<endl;
    52 }
    53 return 0;
    54 }

    continue my dream...
  • 相关阅读:
    Github国内mirror加速
    通过node-inspector或VSCode调试服务器上代码
    node nvm 常见命令
    HBuilderX 修改默认的终端
    LLVM 工具使用
    LLVM 获取Value Type
    LLVM Constant Value to c++ value
    Bison 命名位置
    llvm block
    vscode use cl.exe build C/C++
  • 原文地址:https://www.cnblogs.com/chenbin7/p/2191221.html
Copyright © 2011-2022 走看看