亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 迷宮.txt

?? 一個很經(jīng)典的問題---迷宮問題,對于初學(xué)數(shù)據(jù)結(jié)構(gòu)的同學(xué)來說, 是很好的例子
?? TXT
字號:
#include "stdafx.h"
#include <windows.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <list>
#include <stack>
#include <time.h>

using namespace std;


//class:MazePos-----------------------------------------
//迷宮通道塊類型
class MazePos
{
public:
 int wx,ly; //塊的X,Y坐標(biāo) 
 int path; //塊的類型;0:空塊,-1:墻壁,1:出口路徑
 bool pass; //是否曾經(jīng)過(對墻壁無意義);false:沒有,true:曾經(jīng)過
 bool operator==(const MazePos pos)
 {
  return (wx==pos.wx && ly==pos.ly );
 };
 MazePos operator=(const MazePos pos)
 {
  
  wx=pos.wx;
  ly=pos.ly;
  pass=pos.pass;
  path=pos.path;
  return *this;
 };
};
//End:MazePos---------------------------------------


//class:SElemType-----------------------------------------
//輔助棧元素類型
class SElemType
{
public:
 int ord; //迷宮通道塊路徑上的序號
 MazePos seat;  //通道塊在迷宮中的位置坐標(biāo)
 int di;  //從此通道塊走向下一通道塊的方向
    //0:無效,1:東,2:南,3:西,4:北
 bool operator==(const SElemType et)
 {
  return (seat==et.seat); 
 };
 SElemType operator=(const SElemType et)
 {
  ord =et.ord ;
  seat =et.seat ;
  di =et.di ;
  return (*this);
 };
};
//End:SElemType--------------------------------------


//struct:MazeMap-------------------------------------
//由通道塊組成的迷宮地圖
#define MAPWIDTH 10
#define MAPHEIGHT 10

typedef struct MazeMap
{
 //由通道塊矩陣構(gòu)成
 MazePos mazemap[MAPWIDTH][MAPHEIGHT];
}MazeMap;
//End:MazeMap---------------------------------------


//struct::MazeWay----------------------------------------
//輔助出口路徑鏈表元素類型
typedef struct MazeWay
{
 int wx,ly;
}MazeWay;
//End:MazeWay--------------------------------------------


//Class:Maze----------------------------------------
//主體類,迷宮路徑問題求解
class Maze
{
public:
 Maze(int width=MAPWIDTH,int height=MAPHEIGHT); //生成迷宮地圖
 ~Maze();
 void DoMaze(); //找出出口路徑并顯示
private:
 bool InitOK; //初始化成功標(biāo)志
 MazeMap map; //迷宮地圖
 MazePos start,end; //迷宮的入口和出口
 bool FindPath(); //主要函數(shù),尋找出口路徑
 list<MazeWay> mazeway; //存放出口路徑的臨時鏈表
 void RandMap(); //隨機生成迷宮地圖函數(shù)
 bool CreateMap(bool init); //在初始和找到出口路徑后生成相應(yīng)地圖函數(shù)
 bool pass(MazePos curpos); //當(dāng)前路徑通道塊是否可通(即是不是未經(jīng)過的空塊)
 MazePos NextPos(MazePos curpos,int di); //取得當(dāng)前通道塊當(dāng)前方向上的下一個通道塊
 bool Invalide(SElemType e); //使當(dāng)前通道塊標(biāo)記為不可通
 void DisplayMaze(); //顯示迷宮地圖

};

Maze::Maze(int width,int height)
{
 //
 //隨機生成迷宮地圖
 CreateMap(true);
 //顯示地圖
 DisplayMaze();
}

Maze::~Maze()
{
 //Add codes here
}

bool Maze::FindPath ()
{
 //
 //尋找出口,并生成出口路徑鏈表
 if(InitOK)
 {
  //MazeStack mstack;
  stack<SElemType,list<SElemType> > mstack;
  MazePos curpos=start; 
  int curstep=1; //經(jīng)過的步數(shù)
  MazeWay mw; //出口路徑塊元素
  unsigned mwsize=mazeway.size (); //為顯示運行過程而設(shè)
  do
  {
   if(pass(curpos))
   {
    //如果當(dāng)前位置可通(即是未走過的空塊)

    //封裝棧元素,將當(dāng)前位置進棧
    SElemType e;
    e.ord =curstep;
    e.seat =curpos;
    e.di =1;
    mstack.push (e);

    //保存當(dāng)前位置到出口路徑鏈表
    mw.wx =e.seat .wx ;
    mw.ly =e.seat .ly ;
    mazeway.push_back (mw);


    //如果是出口,則結(jié)束
    if(curpos==end)
     return true;

    //不然就將得到下一個通道塊
    curpos=NextPos(curpos,e.di );
    curstep++;
   }
   else
   {
    //當(dāng)前位置不可通,則在棧內(nèi)找到下一個位置
    if(!mstack.empty())
    {
     SElemType e;
     e=mstack.top ();
     mstack.pop ();
     
     //調(diào)整出口路徑鏈表
     mazeway.pop_back ();

     while((e.di==0 || e.di ==4) && !mstack.empty ())
     {
      Invalide(e);  //標(biāo)記刻通道塊不能通過
      e=mstack.top ();
      mstack.pop (); //退回一步

      //調(diào)整出口路徑鏈表
      mazeway.pop_back ();

     }
     if(mstack.empty ())
      return false;
     else if( e.di<5)
     {
      e.di++;
      e.di=e.di%5;

      mstack.push (e);

      //保存當(dāng)前位置到出口路徑鏈表
      mw.wx =e.seat .wx ;
      mw.ly =e.seat .ly ;
      mazeway.push_back (mw);

      curpos=NextPos(e.seat ,e.di );
     }
     
    }
   }
   ///*//顯示運行過程
   if(mwsize!=mazeway.size () )
   {
    CreateMap(false);
    DisplayMaze();
    mwsize=mazeway.size ();
    Sleep(800); //要包含windows.h頭文件
   }
   //*
  }while(!mstack.empty ());
 }
 return false;
}

MazePos Maze::NextPos(MazePos curpos,int di)
{
 //
 MazePos pos;
 switch(di)
 {
 case 1:
  pos=map.mazemap [curpos.wx+1][curpos.ly ] ;
  break;
 case 2:
  pos=map.mazemap [curpos.wx][curpos.ly+1 ] ;
  break;
 case 3:
  pos=map.mazemap [curpos.wx-1][curpos.ly] ;
  break;
 case 4:
  pos=map.mazemap [curpos.wx][curpos.ly-1] ;
  break;
 }
 return pos;
}

bool Maze::pass(MazePos curpos)
{
 //
 //通過MazePos類型參數(shù)傳遞的信息檢查MazeMap map;
 if(curpos.wx <0 || 
  curpos.wx >=MAPWIDTH || 
  curpos.ly <0 || 
  curpos.ly >=MAPHEIGHT)
  return false;
 return (map.mazemap [curpos.wx ][curpos.ly ].path ==0 && 
   map.mazemap [curpos.wx ][curpos.ly ].pass ==false );
  
}

void Maze::DoMaze ()
{
 //
 if(!InitOK)
  return;
 if(FindPath())
 {
  CreateMap(false);
  DisplayMaze();
 }
 else
 {
  cout<<endl<<"NO PATH!"<<endl;
 }
}

void Maze::RandMap ()
{
 //
 //只能生成從左上到右下的迷宮地圖
 MazeWay curway; //隨機生成的當(dāng)前正處理的出口路徑塊(組成mw)
 list<MazeWay> mw; //隨機生成的出口路徑(由curway組成)
 list<MazeWay>::iterator iter; //容器適配器

 curway.wx =0;
 curway.ly =1;
 mw.push_back (curway);

 curway.wx ++;
 mw.push_back (curway);

 srand(time(0)); //取得當(dāng)前時間作為隨機數(shù)種子

 while(curway.wx <MAPWIDTH-1 && curway.ly <MAPHEIGHT-1)
 {
  if(rand()%2==1)
  {
   //生成隨機X坐標(biāo)上的路徑塊
   curway.wx ++;
   
   mw.push_back (curway);
  }
  else
  {
   //生成隨機Y坐標(biāo)上的路徑塊
   curway.ly ++;
   mw.push_back (curway);
  }
 }

 srand(time(0));
 for(int y=0;y<MAPHEIGHT;y++)
 {
  for(int x=0;x<MAPWIDTH;x++)
  {
   //填充每個通道塊
   map.mazemap [x][y].wx =x;
   map.mazemap [x][y].ly =y;
   map.mazemap [x][y].pass =false;
   if(x==0||y==0||x==MAPWIDTH-1||y==MAPHEIGHT-1)
   {
    //生成四周墻壁
    map.mazemap [x][y].path =-1;
    //map.mazemap [x][y].pass =true;
   }
   else
   {
    if(rand()%10>=6) //數(shù)值越小,墻壁越多
    {
     map.mazemap [x][y].path =-1; //隨機生成墻壁
     //map.mazemap [x][y].pass =true;
    }
    else
    {
     map.mazemap [x][y].path =0; //生成空的通道塊
     //map.mazemap [x][y].pass =false;
    }
   } 
  }
 }
 //生成出口路徑
 for(iter=mw.begin ();iter!=mw.end ();iter++)
 {
  map.mazemap [(*iter).wx ][(*iter).ly ].path =0;
  //map.mazemap [(*iter).wx ][(*iter).ly ].pass =false;
 }
 //生成入口和出口

 start=map.mazemap [mw.front ().wx][mw.front ().ly];
 end=map.mazemap [mw.back ().wx][mw.back ().ly];
 //初始化成功
 InitOK=true;
}

bool Maze::CreateMap (bool init)
{
 //
 if(init)
 {
  RandMap();
 }
 else
 {
  for(int y=0;y<MAPHEIGHT;y++)
   for(int x=0;x<MAPWIDTH;x++)
   {
    if(map.mazemap [x][y].path ==0)
     map.mazemap [x][y].pass =0;
   }
  list<MazeWay>::iterator  iter;
  for(iter=mazeway.begin ();iter!=mazeway.end ();iter++)
  {
   map.mazemap [(*iter).wx][(*iter).ly ].path =1; 
  }
 }
 return true;
}

bool Maze::Invalide (SElemType e)
{
 //
 //通過SElemType類型參數(shù)傳遞的信息修正MazeMap map;
 if(e.seat .wx<0 ||
  e.seat .wx>=MAPWIDTH ||
  e.seat .ly<0 ||
  e.seat .ly>=MAPHEIGHT)
  return false;
 map.mazemap [e.seat .wx][e.seat .ly ].pass =true; 
 return true;
}

void Maze::DisplayMaze ()
{
 //
 cout<<endl;
 for(int y=0;y<MAPHEIGHT;y++)
 {
  for(int x=0;x<MAPWIDTH;x++)
  {
   switch (map.mazemap [x][y].path)
   {
   case -1:
      cout<<"█";break; //墻壁圖案
   case 0:
      cout<<"  ";break; //空塊圖案
   case 1:
      cout<<"==";break; //出口路徑圖案
   }
    
  }
  cout<<endl;
 }
 cout<<endl; 
}
//End:Maze----------------------------------------

//main--------------------------------------------
//主函數(shù),迷宮求解演示
int main(int argc, char* argv[])
{
 //
 cout<<"下面是隨機生成的迷宮:"<<endl;
 Maze mymaze; //生成迷宮
 cout<<"按任意鍵演示迷宮解法!"<<endl;
 system("pause");
 mymaze.DoMaze (); //生成出口路徑
 cout<<"演示結(jié)束."<<endl;
 system("pause");
 return 0;
}
//End:main--------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆国产欧美一区二区三区| 国产精品一区在线观看你懂的| 91精品国产日韩91久久久久久| 国产一区二区三区在线观看免费 | 成人av电影在线观看| 亚洲最大成人网4388xx| 337p日本欧洲亚洲大胆色噜噜| www亚洲一区| 91网站在线播放| 国产一区 二区| 亚洲444eee在线观看| 欧美激情一区不卡| 日韩欧美中文一区| 在线免费一区三区| 成人国产精品免费观看动漫| 蜜臀精品一区二区三区在线观看| 国产精品福利在线播放| 精品国产欧美一区二区| 欧美日韩在线播放三区四区| 成人va在线观看| 国产在线视频一区二区三区| 亚洲国产精品影院| 亚洲日本va在线观看| 国产日韩亚洲欧美综合| 欧美r级在线观看| 欧美片在线播放| 色视频欧美一区二区三区| 国产91精品久久久久久久网曝门| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲一区二区三区视频在线播放| 亚洲日本免费电影| 国产精品污污网站在线观看| xf在线a精品一区二区视频网站| 欧美一区二区视频免费观看| 欧美色精品在线视频| 色综合天天综合网天天看片| 白白色 亚洲乱淫| 丁香五精品蜜臀久久久久99网站| 麻豆成人在线观看| 裸体健美xxxx欧美裸体表演| 石原莉奈一区二区三区在线观看| 亚洲一区影音先锋| 亚洲国产成人porn| 亚洲一线二线三线视频| 亚洲午夜私人影院| 亚洲二区在线视频| 亚洲va欧美va天堂v国产综合| 一区二区三区视频在线看| 亚洲另类一区二区| 亚洲一区二区三区中文字幕| 亚洲福利视频一区二区| 婷婷国产在线综合| 日韩av一区二区三区四区| 日本一道高清亚洲日美韩| 青娱乐精品在线视频| 美女免费视频一区二区| 久久精工是国产品牌吗| 久久99国产精品久久| 国产在线精品免费av| 国产sm精品调教视频网站| 欧美一区二区在线免费观看| 5月丁香婷婷综合| 精品少妇一区二区三区在线视频| 精品精品国产高清a毛片牛牛| 精品国产乱码久久久久久浪潮| 精品久久久久久综合日本欧美| 久久婷婷国产综合精品青草| 日本一区二区三区国色天香 | 狠狠色丁香婷综合久久| 国产一区二区三区蝌蚪| 成人免费va视频| 色噜噜狠狠一区二区三区果冻| 欧美三片在线视频观看| 日韩一区二区三区视频在线 | 亚洲一区在线播放| 美女诱惑一区二区| 国产成人综合在线观看| 色哟哟国产精品免费观看| 91麻豆精品国产| 国产三级一区二区| 一区二区激情视频| 看国产成人h片视频| www.综合网.com| 欧美肥妇bbw| 欧美经典一区二区| 亚洲第一搞黄网站| 国产激情一区二区三区| 在线看国产日韩| 久久综合九色综合久久久精品综合| 国产精品嫩草99a| 日韩成人精品在线观看| 成人不卡免费av| 欧美精品精品一区| 中文字幕欧美国产| 日韩在线卡一卡二| 97精品国产露脸对白| 欧美一区二区三区四区在线观看| 国产午夜亚洲精品午夜鲁丝片| 一区二区日韩av| 国产suv一区二区三区88区| 欧美日韩日日摸| 国产精品乱码一区二区三区软件| 亚洲aaa精品| caoporen国产精品视频| 日韩视频一区在线观看| 精品亚洲免费视频| 在线观看免费视频综合| 国产日韩欧美高清| 蜜桃av噜噜一区| 欧美亚洲免费在线一区| 国产精品网站一区| 久久福利视频一区二区| 色八戒一区二区三区| 久久综合色之久久综合| 婷婷亚洲久悠悠色悠在线播放| 成人av在线一区二区三区| 日韩欧美www| 亚洲一区二区三区视频在线播放| 国产成人av资源| 91精品国产91久久久久久最新毛片 | 91免费在线视频观看| 精品国产91乱码一区二区三区| 亚洲一区在线看| 91视视频在线观看入口直接观看www | 欧美一区二区视频在线观看2020| 亚洲欧美另类小说| 成人午夜免费视频| 久久久久亚洲蜜桃| 国产尤物一区二区在线| 欧美不卡在线视频| 日韩**一区毛片| 在线播放一区二区三区| 亚洲精品高清视频在线观看| 777午夜精品视频在线播放| 亚洲一区二区3| 欧美三级韩国三级日本一级| 一卡二卡三卡日韩欧美| 在线观看免费亚洲| 一区二区三区欧美| 欧美午夜精品一区| 亚洲国产成人av好男人在线观看| 在线视频一区二区三区| 亚洲精品精品亚洲| 91福利视频网站| 亚洲自拍与偷拍| 欧美日韩日本视频| 水蜜桃久久夜色精品一区的特点| 欧美午夜一区二区三区免费大片| 一区二区高清免费观看影视大全| 色悠久久久久综合欧美99| 日韩毛片精品高清免费| 91看片淫黄大片一级在线观看| 国产精品天天看| 99精品视频一区二区| 亚洲欧洲三级电影| 色呦呦国产精品| 一区二区久久久久久| 9191精品国产综合久久久久久| 青椒成人免费视频| 久久精品亚洲国产奇米99| 国产.精品.日韩.另类.中文.在线.播放 | 欧美日韩黄视频| 日本在线观看不卡视频| 2020日本不卡一区二区视频| 国产suv精品一区二区6| 亚洲美女屁股眼交3| 欧美日韩精品一区二区三区四区| 日本中文字幕不卡| 久久久久久久久久久久久夜| 成人成人成人在线视频| 亚洲自拍偷拍图区| 日韩精品综合一本久道在线视频| 国产在线观看免费一区| 国产精品卡一卡二卡三| 在线看一区二区| 久久精品999| 中文字幕视频一区二区三区久| 91成人看片片| 美日韩一区二区| 一区在线观看视频| 69久久99精品久久久久婷婷| 精品视频一区 二区 三区| 老司机精品视频导航| 国产精品久久久久久久裸模| 9191国产精品| 99久久免费国产| 久久国产精品99精品国产| 国产精品成人免费| 4438x成人网最大色成网站| 国产一二精品视频| 一区二区三区资源| 久久久欧美精品sm网站| 欧美午夜影院一区| 国产黄色成人av| 亚洲综合精品久久| 国产精品三级av| 日韩精品资源二区在线| 在线视频国内自拍亚洲视频| 国产一区久久久| 五月激情丁香一区二区三区|