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

溫馨提示×

溫馨提示×

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

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

C++解迷宮問題

發布時間:2020-04-14 05:45:53 來源:網絡 閱讀:399 作者:zgw285763054 欄目:編程語言
#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++解迷宮問題

向AI問一下細節

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

AI

台山市| 永善县| 韶山市| 贺兰县| 石景山区| 阿瓦提县| 武强县| 中卫市| 定结县| 瑞丽市| 洪江市| 桑植县| 定远县| 阿巴嘎旗| 富蕴县| 玉树县| 鹿泉市| 成都市| 永丰县| 昂仁县| 林甸县| 孟津县| 三都| 五原县| 宝兴县| 马公市| 东丰县| 保康县| 定结县| 犍为县| 郯城县| 屯昌县| 德令哈市| 拉萨市| 沙雅县| 河西区| 和硕县| 图木舒克市| 谢通门县| 涪陵区| 太仓市|