91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

初級版迷宮問題(棧的應用)

發布時間:2020-08-05 13:30:16 來源:網絡 閱讀:437 作者:hhaxy77 欄目:編程語言
 
/*
 (一)初級迷宮問題:
  0:代表通
  1:代表不通
  求迷宮的通路
 (二)步驟:
  1.創建迷宮
     * 從文件中讀取迷宮
     * 開辟二維數組存放迷宮
  2.尋找通路
     * 檢查某位置是否為通
     * 出口位置判斷
     * 走過的路用2標記
     * 利用棧回溯
 (三)問題
  1.解決回溯中重復探測:遞歸
  2.最優解:迷宮的最短通路
*/

#include <iostream>
#include <stdlib.h>
#include <assert.h>
#include <stack>
#define _CRT_SECURE_NO_WARNINGS 1
#define N 10
using namespace std;
struct Pos
{
 size_t _row;  //行
 size_t _col;  //列
};
void GetMap(int* m, int n)
{
 int i = 0;
 int j = 0;
 assert(m);
 FILE* fin = fopen("C:\\學習\\code\\數據結構\\MazeMap\\MazeMap.txt","r");
 assert(fin);
 for(i = 0; i < n; i++)
 {
  for(j = 0; j < n;)
  {
   char ch = fgetc(fin);
   if(ch == '0'||ch == '1')
   {
    m[i*n+j] = ch - '0';
    j++;
   }
  }
 }
}
void PrintMap(int* m, int n)
{
 assert(m);
 int i = 0;
 int j = 0;
 for(i = 0; i < n; i++)
 {
  for(j = 0; j < n; j++)
  {
   cout<<m[i*n+j]<<' ';
  }
  cout<<endl;
 }
}
bool CheckIsAccess(int* m, int n, const Pos& next)
{
 if(next._row >= 0 && next._row < n 
  && next._col >= 0 && next._col < n
  && m[next._row*n+next._col] == 0)
 {
  return true;
 }
 else
 {
  return false;
 }
}
bool SearchMazePath(int* m, int n, Pos enrty,stack<Pos> paths)
{
 assert(m);
 paths.push(enrty);
 while(!paths.empty())
 {
  Pos cur = paths.top();
  m[cur._row * n + cur._col] = 2;
  //檢查是否找到出口
  if(cur._row == n-1)
  {
   return true;
  }
  Pos next = cur;
  //上
  next._row--;
  if(CheckIsAccess(m, n, next))
  {
   paths.push(next);
   continue;
  }
  next = cur;
  //右
  next._col++;
  if(CheckIsAccess(m, n, next))
  {
   paths.push(next);
   continue;
  }
  next = cur;   //next歸位
  //下
  next._row++;
  if(CheckIsAccess(m, n, next))
  {
   paths.push(next);
   continue;
  }
  next = cur;
  //左
  next._col--;
  if(CheckIsAccess(m, n, next))
  {
   paths.push(next);
   continue;
  }
 
  paths.pop();
 }
 return false;
}
int main()
{
 int map[N][N]= {0};
 GetMap((int*)map, N);
 PrintMap((int*)map, N);
 Pos enrty = {2,0};
 stack<Pos> paths;
 cout<<endl;
 cout<<SearchMazePath((int*)map,N,enrty,paths);
 cout<<endl;
 PrintMap((int*)map, N);
 system("pause");
 return 0;
}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青岛市| 伊宁市| 桓台县| 沧源| 尉氏县| 唐海县| 黄浦区| 丘北县| 呈贡县| 淮安市| 雅江县| 镇安县| 万州区| 邯郸县| 韩城市| 莱阳市| 疏勒县| 海门市| 航空| 青州市| 勐海县| 固安县| 合山市| 南和县| 肥城市| 涟水县| 田林县| 洛南县| 治县。| 中方县| 高阳县| 桐乡市| 溧水县| 信丰县| 庐江县| 涟水县| 根河市| 石台县| 合作市| 深泽县| 湘潭县|