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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 源代碼.txt

?? 本程序的功能是找出指定迷宮的路徑
?? TXT
字號:
//程序名:labyrinth.cpp
//      程序功能:迷宮通路尋找的實現
//          作者:黃秋旋
//          日期:2008.12.20
//          版本:1.0
//      修改內容:
//      修改日期:
//      修改作者:
//對應類實現文件: labyrinth.h
//                Stack.h

#include"labyrinth.h"


////////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:主函數
//函數返回值:無

void main()
{
	int i,j;
	char ch;
choice:cout<<"是否重新輸入迷宮:Y/y:是,N/n:否 \n請選擇(Y/N):";     //選擇是否重新輸入迷宮
	cin>>ch;
	if(ch=='Y' || ch=='y') //選擇重新輸入迷宮     
	{
		cout<<"\n請輸入8行10列的迷宮矩陣,其中最外層均為“1”!\n";
lg:for(i=0;i<m+2;i++)        //輸入迷宮
			for(j=0;j<n+2;j++)
			{
				cin>>maze[i][j];
				mark[i][j]=0;       //初始化未訪問標志
			}//for
	}//if:選擇Y

	else if(ch=='N' || ch=='n')//選擇從文件中讀入迷宮
	{
		ifstream fip;
		fip.open("labyrinth.txt",ios::in|ios::binary);   //打開文件
        if(fip.fail())  //打開失敗
		{
			cout<<"文件不存在!請重新輸入迷宮!";
			goto lg;   //回到if重新輸入迷宮
		}//else if 

		int in;
			for(i=0;i<m+2;i++)
			{
				for(j=0;j<n+2;j++)
				{     
					fip>>in;      //讀取迷宮數據
					maze[i][j]=in;
					cout<<maze[i][j]<<' ';   //輸出迷宮
                    mark[i][j]=0;    //初始化未訪問標志
				
				}//for
				cout<<endl;
			}//for
		
		fip.close();   //關閉文件
	}//else if
	else   //輸出錯誤,提示重新輸入
	{
		cout<<"請重新輸入你的選擇!"; 
		goto choice;    //重新選擇讀入迷宮的方式
	}//else
	cout<<"(x,y,d)中的x,y分別表示迷宮中的坐標!"<<endl<<endl;
	cout<<"0: 向↓,1: 向↘,2: 向→, 3:向↖"<<endl<<endl;      
	cout<<"4: 向↑,5: 向↖,6: 向←, 7: 向↘" <<endl<<endl;         
	cout<<"有兩種方式輸出迷宮路徑,"<<endl<<endl;
	cout<<"Y/y:逆序(遞歸算法),N/n:順序(非遞歸非遞歸)! \n";
    cout<<"\n請輸入你的選擇: ";   
choice1:cin>>ch;     //選擇想調用的算法
	cout<<endl;
	
	if(ch=='N' || ch=='n')   //選擇非遞歸算法
	{
		cout<<"采用順序輸出迷宮路徑: \n";
		cout<<"\nd 表示做到下一個坐標的方向!\n";
	    cout<<"\n路徑為:\n";
		Seek();    //調用尋路非遞歸函數
	}
     else if(ch=='Y' || ch=='y')   //選擇遞歸算法
	 {
		 cout<<"采用逆序輸出迷宮路徑! \n";
		 cout<<"\nd 表示從前一個坐標走到該坐標的方向\n";
		 cout<<"\n路徑為:\n";
                 mark[1][1]=1;    //加訪問標志      
         if(Seekd(1,1))   //調用遞歸時用	
	     cout<<"("<<1<<","<<1<<")"<<endl;       //尋找到通路時,輸出迷宮入口處的坐標	
	 }//else if
	 else  //輸出錯誤,提示重新輸入
	 {
		 cout<<"\n輸入錯誤,請重新輸入你的選擇:";
		 goto choice1;     //重新選擇算法
	 }
                    
}


????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
//程序名:labyrinth.h
//程序功能:尋找迷宮通路的實現程序
//作者:黃秋旋
//日期:2008.12.20
//版本:1.0
//修改內容:
//修改日期:
//修改作者:
//對應類實現文件: Stack.h
//對應主程序文件: labyrinth.cpp


#include<iostream.h>
#include"Stack.h"
#include<fstream.h>

#define m 6    //定義迷宮常量:m: 迷宮行數
#define n 8    //              n:迷宮列數
              
int mark[m+2][n+2];    //保存訪問標記的數組
int maze[m+2][n+2];    //保存迷宮數據的數組
int move[8][2]={       //方向數組
	              {0,1},  //  向↓
	              {1,1},  //  向↘
	              {1,0},  //  向→
	              {1,-1}, // 向↗
               	  {0,-1}, // 向↑
	              {-1,-1},//向↖
	              {-1,0}, // 向←
				  {-1,1}  //  向↘
                 };               


///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:尋找迷宮路徑的遞歸算法
//函數功能:用遞歸尋找迷宮的通路
//函數參數:x:當前通路位置的橫坐標
//          y:當前通路位置的縱坐標
//參數返回值:true:表示當前位置可訪問時的返回值
//            false: 表示查找通路失敗時的返回值

bool Seekd(int x,int y)               
{
	int i;
	int g,h;
	if((x==m)&&(y==n))   //當前位置是迷宮出口時,返回上一層遞歸函數
		return true;
	for(i=0;i<8;i++)    
	{
		g=x+move[i][0];                     //求出下個一位置的行、列坐標
		h=y+move[i][1];
	    if((maze[g][h]==0)&&(mark[g][h]==0))
		{
			mark[g][h]=1;                    //置mark為1,表明已訪問過
		    if(Seekd(g,h))
			{
			    cout<<"("<<g<<","<<h<<","<<i<<") ";  //當下一個坐標位置可訪問時,輸出通路
		        return true;   //返回上一層遞歸函數
			}//if
		}//if
	}//for
   if((x==1)&&(y==1))  //當找不到通路時,輸出提示
    	cout<<"No path!"<<endl;
   return false;    //尋找通路失敗,返回false
}


////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:尋找迷宮路徑的非遞歸算法
//函數功能:利用棧,找出迷宮的通路
//函數參數:無
//參數返回值:無

void Seek()                             
{ 
    Type item;
	mark[1][1]=1;   //訪問入口處坐標
	Stack s;  //逆序暫存通路信息的棧
	Stack s1; //順序存儲通路信息

	item.x=1; item.y=1; item.d=-1;        //將入口位置及方向初值-1壓入棧
	s.push(item);

	while(!s.empty())   //當棧不為空時
	{	
		item=s.top();  //取出棧頂元素,尋找從改坐標出發的下個一通路坐標
		s.pop();

		int x=item.x; int y=item.y; int d=item.d+1;         //沿原位置的下個一方向前進

		while(d<8)  //深度尋找迷宮通路
		{

			if((x==m)&&(y==n))          //到達出口,將棧s中的元素逆序壓入棧s1中,然后從按順序輸出,最后返回
			{
				item.x=x;
	        	item.y=y;
		        item.d=NULL;
		        s1.push(item);      //將通路坐標壓入棧s1
         
			    while(!s.empty())    //將棧s中的元素逆序
				{
					item=s.top();
                    s.pop();
                    s1.push(item);   
				}//while
                 while(!s1.empty())  //輸出通路
				{
					item=s1.top();
                    s1.pop();
					if((item.x==m)&&(item.y==n))
						cout<<"("<<item.x<<","<<item.y<<") ";  //輸出迷宮出口坐標
					else
						cout<<"("<<item.x<<","<<item.y<<","<<item.d<<") ";      //輸出通路
				 }//while
			cout<<endl;
			return;  //輸出完成,返回
			}//if

			int g=x+move[d][0];                  //按方向d前進,求出下一個位置的坐標
	        int h=y+move[d][1];

			if((maze[g][h]==0)&&(mark[g][h]==0))          //對未訪問的可通行的下一個位置壓入棧,并將下一個位置變為當前位置,否則沿下一個方向前進
	
			{
				mark[g][h]=1;  //訪問標志
                item.x=x;
	        	item.y=y;
		        item.d=d;
		        s.push(item);      //將通路坐標暫存入棧s

				x=g;
	        	y=h;
		        d=0;                  //進入新位置后,重新從初始方向向下開始                   
			}//if
			else
				d++;  //試探下一個方向的坐標
		}//while
	}//while

cout<<"No path!"<<endl;      //不存在通路
}//Seek


????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
//程序名:Stack.h
//程序功能:棧類的頭文件
//作者:黃秋旋
//日期:2008.12.20
//版本:1.0
//修改內容:
//修改日期:
//修改作者:
//對應類實現文件: labyrinth.h
//對應主程序文件: labyrinth.cpp



#include<iostream.h>
#include<stdlib.h>

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


struct items         //存儲通路坐標信息的結構體
{
	int x,y,d;
};

typedef items Type;


struct Node         //棧節點的結構體
{
	Type data; 
	Node *next;
};

class Stack      //棧類定義
{
private:
	Node *atop;

public:
	Stack(){atop=NULL;};  //構造函數
	~Stack();   //析構函數
	Type top();  //取棧頂函數
	void pop();  //出棧函數
	bool empty();  //判空函數
	bool push(Type& x);  //壓棧函數
};


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:析構函數
//函數功能:釋放棧類的空間
//函數參數:無
//參數返回值:無

Stack::~Stack()
{
	Node *p;
	while(atop!=NULL)
	{
		p=atop;
		atop=atop->next;
		delete p;  //釋放節點p的空間
	}//while
};


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:取棧頂元素
//函數功能:取出棧頂元素
//函數參數:無
//參數返回值:atop->data :棧頂元素的數據

Type Stack::top()
{
	if(atop==NULL)
		exit(1);
	else
		return (atop->data);     //返回棧頂元素的內容
};


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:出棧函數
//函數功能:使棧頂元素出棧
//函數參數:無
//參數返回值:無

void Stack::pop()
{
	if(atop==NULL) exit(1);  //當棧為空時,正常退出
	else 
	{
	    atop=atop->next;  //棧頂指針指向下一個元素
	}
};


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:判空函數
//函數功能:判斷棧是否為空
//函數參數:無
//參數返回值:bool:當棧為空時返回,否則返回0

bool Stack::empty()
{
	return atop==NULL;
};


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//函數名:壓棧函數
//函數功能:將通路數據壓入棧中
//函數參數:Type &x:表示按引用方式,將通路的實參傳給函數
//參數返回值:bool:壓棧完成時返回true

bool Stack::push(Type &x)
{
	Node *p;
	p=new Node;  //為節點指針p申請空間
	p->data=x;  //將通路信息賦給p的數據域
	p->next=atop;  //用頭插入的方式將節點p插入到棧鏈中
	atop=p;  //棧頂指針指向p
    return true;  //壓棧完成,返回true
};




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品视频一区二区三区| 亚洲精品网站在线观看| 国产亚洲综合av| 亚洲一区二区五区| 国产凹凸在线观看一区二区| 欧美性xxxxx极品少妇| 国产日韩欧美a| 视频在线观看一区| 91在线观看免费视频| 26uuu亚洲| 青青草国产精品亚洲专区无| 国产日韩欧美精品一区| 国产精品二三区| 久久精品免费观看| 欧美色视频在线| 国产精品女人毛片| 国产麻豆一精品一av一免费| 欧美日韩国产区一| 亚洲黄色免费网站| 成人av高清在线| 国产日韩欧美精品电影三级在线| 国产成人在线网站| 欧美日韩久久久| 一区二区在线电影| 91在线码无精品| 国产精品免费视频网站| 国产在线精品一区二区不卡了| 精品视频一区二区三区免费| 一区二区在线观看视频在线观看| 成人精品电影在线观看| 欧美国产一区在线| 国产一区不卡在线| 久久久精品影视| 国产综合久久久久久久久久久久| 精品剧情在线观看| 蜜臀久久99精品久久久画质超高清| 精品视频在线免费观看| 午夜国产精品一区| 91精品国产色综合久久ai换脸| 一区二区不卡在线播放 | 亚洲h动漫在线| 欧美视频一区二区三区四区| 亚洲成人你懂的| 欧美伦理影视网| 日本视频中文字幕一区二区三区| 7878成人国产在线观看| 麻豆精品国产91久久久久久 | 欧美亚男人的天堂| 无吗不卡中文字幕| 日韩丝袜情趣美女图片| 韩国毛片一区二区三区| 久久网站热最新地址| 国产精品99精品久久免费| 国产女同互慰高潮91漫画| 成人激情文学综合网| 亚洲激情在线激情| 欧美一区二区啪啪| 国产不卡在线视频| 一区二区三区鲁丝不卡| 337p亚洲精品色噜噜噜| 国产精品自在欧美一区| 亚洲视频一区二区免费在线观看| 欧美日韩中文字幕一区二区| 麻豆国产欧美一区二区三区| 中文字幕av一区 二区| 欧美在线观看视频一区二区三区 | 欧洲日韩一区二区三区| 日本不卡的三区四区五区| 欧美xxxxx裸体时装秀| 成人精品gif动图一区| 亚洲成人精品一区| 国产婷婷色一区二区三区在线| 91色九色蝌蚪| 久久精品国产精品亚洲精品| 国产精品二三区| 日韩欧美一二区| 99精品视频一区二区三区| 色噜噜狠狠色综合中国| 国产一级精品在线| 欧美国产在线观看| 欧美一区二区日韩| 成人avav在线| 久久国产精品一区二区| 亚洲女爱视频在线| 精品91自产拍在线观看一区| 欧美在线999| 国产一区啦啦啦在线观看| 亚洲综合一二区| 亚洲国产成人在线| 日韩精品一区在线| 在线观看成人免费视频| av电影在线观看一区| 免费在线看一区| 亚洲精品第1页| 国产精品美女久久久久久久 | 精品一区二区三区在线观看国产 | 国产女主播在线一区二区| 欧美亚洲综合色| 成人国产精品免费| 精品无人码麻豆乱码1区2区| 亚洲国产va精品久久久不卡综合| 中文字幕精品综合| 亚洲国产精品99久久久久久久久| 精品一区二区三区在线视频| 久久久午夜精品理论片中文字幕| 不卡的av电影在线观看| 在线免费观看成人短视频| 亚洲欧美日韩国产手机在线| 日韩欧美国产综合| 国产精品亚洲成人| 国产午夜亚洲精品不卡| 日韩你懂的在线播放| 老汉av免费一区二区三区| 国产日韩欧美一区二区三区乱码 | 99精品视频一区二区| 风间由美性色一区二区三区| 国产麻豆精品一区二区| 国产一区二区精品久久| 国产高清不卡一区二区| 国产激情视频一区二区三区欧美 | 国产女人18毛片水真多成人如厕| 国产精品每日更新| 国产日韩欧美综合在线| 久久免费午夜影院| 久久久影视传媒| 久久久99精品久久| 欧美激情一区在线| 国产精品伦一区二区三级视频| 亚洲国产精品ⅴa在线观看| 国产精品国产三级国产有无不卡| 中国av一区二区三区| 中文字幕日韩精品一区| 曰韩精品一区二区| 亚欧色一区w666天堂| 日韩成人午夜电影| 久久疯狂做爰流白浆xx| 成人深夜视频在线观看| 99天天综合性| 欧美日韩免费视频| 精品欧美乱码久久久久久1区2区| 久久视频一区二区| 国产精品久久久久影视| 亚洲午夜免费福利视频| 日日摸夜夜添夜夜添亚洲女人| 老鸭窝一区二区久久精品| 成人一区在线观看| 色www精品视频在线观看| 欧美精品1区2区| 欧美www视频| 国产精品看片你懂得| 午夜精品一区二区三区三上悠亚| 久久婷婷国产综合精品青草| 亚洲国产精品成人久久综合一区| 国产精品视频第一区| 久久综合999| 亚洲精品乱码久久久久久| 午夜欧美视频在线观看| 免费观看日韩av| 国产成人免费视频网站高清观看视频| 国产精品一区二区无线| 91视频免费播放| 日韩亚洲欧美在线| 国产日韩影视精品| 午夜影院久久久| 国产精品影视在线| 欧美日韩夫妻久久| kk眼镜猥琐国模调教系列一区二区| 久久 天天综合| 91视视频在线观看入口直接观看www| 国产香蕉久久精品综合网| 黄一区二区三区| 国产日韩三级在线| 色一区在线观看| 日本中文字幕一区二区视频 | 欧美日韩电影在线| 久久综合中文字幕| 麻豆一区二区99久久久久| 99久久精品免费| 免费在线观看日韩欧美| 久久精品国产亚洲一区二区三区| 亚洲电影你懂得| 91精品久久久久久久91蜜桃| 国产网红主播福利一区二区| 日韩精品午夜视频| 色综合中文综合网| 懂色一区二区三区免费观看| 欧美天堂一区二区三区| 国产亚洲精久久久久久| 男女男精品网站| 欧美老肥妇做.爰bbww视频| 亚洲欧洲在线观看av| 国产精品99久久不卡二区| 日韩视频免费观看高清完整版| 亚洲一区二区三区中文字幕| 99精品视频在线观看免费| 国产精品国产三级国产aⅴ原创| 老司机午夜精品99久久| 5858s免费视频成人| 日韩电影在线免费看| 7777女厕盗摄久久久|