成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

C++解迷宮問題

#include <iostream>
using namespace std;
#include <stack>
#include <assert.h>

//初始化迷宮
void InitMaze(int* maze,int row, int col)
{
	FILE* fout = fopen("Maze.txt", "r");

	assert(fout);

	for (int i = 0; i < row; ++i)
	{
		for (int j = 0; j < col;)
		{
			char ch = fgetc(fout);

			if (ch == EOF)
			{
				cout<<"Init MazeMap fail"<<endl;
				exit(false);
			}

			if (ch == '1' || ch == '0')
			{
				maze[i * row + j] = ch - '0';
				++j;
			}
		}
	}

	fclose(fout);
}

struct Pos
{
	int _row; //行
	int _col; //列
};

//打印迷宮
void PrintMaze(int* maze, int row, int col)
{
	for (int i = 0; i < row; ++i)
	{
		for (int j = 0; j < col; ++j)
		{
			cout<<maze[i * row + j]<<" ";
		}

		cout<<endl;
	}

	cout<<endl;
}

//判斷當前位置是否為0
inline bool CheckIsPassWay(int* maze, int row, int col, Pos pos)
{
	if (pos._row < row && pos._col < col
		&& maze[pos._row * col + pos._col] == 0)
	{
		return true;
	}

	return false;
}

//判斷迷宮是否有出口
bool GetMazePath(int* maze, int row, int col, Pos entry, stack<Pos>& path)
{
	assert(maze);

	path.push(entry);
	maze[entry._row * col + entry._col] = 2;//將走過的路標記為2

	while (!path.empty())
	{
		Pos cur = path.top();
		Pos next = cur;

		if (row-1 == next._row)//找到出口
		{
			return true;
		}

		//判斷右邊是否為0 
		next = cur;
		next._col++;
		if (CheckIsPassWay(maze, row, col, next))
		{
			maze[next._row * row + next._col] = 2;
			path.push(next);
			continue;
		}

		//上
		next = cur;
		next._row--;
		if (CheckIsPassWay(maze, row, col, next))
		{
			maze[next._row * row + next._col] = 2;
			path.push(next);
			continue;
		}

		//下
		next = cur;
		next._row++;
		if (CheckIsPassWay(maze, row, col, next))
		{
			maze[next._row * row + next._col] = 2;
			path.push(next);
			continue;
		}

		//左
		next = cur;
		next._col--;
		if (CheckIsPassWay(maze, row, col, next))
		{
			maze[next._row * row + next._col] = 2;
			path.push(next);
			continue;
		}

		path.pop();//四個方向都不通,返回上一步
	}

	return false;//棧為空,沒有找到出口
}


void TestMaze()
{
	int maze[10][10] = {};
	Pos entry = {1, 0};
	stack<Pos> path;//將走過的路徑保存在棧path中
	InitMaze((int*)maze, 10, 10);
	PrintMaze((int*)maze, 10, 10);
	GetMazePath((int*)maze, 10, 10, entry, path);
	PrintMaze((int*)maze, 10, 10);
}

int main()
{
	TestMaze();
	return 0;
}

C++解迷宮問題

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于做網(wǎng)站、網(wǎng)站制作、鄧州網(wǎng)絡推廣、微信平臺小程序開發(fā)、鄧州網(wǎng)絡營銷、鄧州企業(yè)策劃、鄧州品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供鄧州建站搭建服務,24小時服務熱線:18980820575,官方網(wǎng)址:jinyejixie.com

本文題目:C++解迷宮問題
分享URL:http://jinyejixie.com/article40/ijjoeo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設云服務器、品牌網(wǎng)站設計、搜索引擎優(yōu)化關鍵詞優(yōu)化、移動網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設