首先我们在任意盘建一个test.txt文档,把迷宫输进去,我是在盘建立了一个10*10的迷宫。

              

         1  1  1  1  1  1  1  1  1  1

         1  1  1  1  1  1  1  1  1  1

         0  0  0  1  1  1  1  1  1  1

         1  1  0  1  1  1  1  1  1  1

         1  1  0  1  1  1  1  1  1  1

         1  1  0  0  0  0  0  0  0  1

         1  1  1  0  1  1  1  1  0  1

         1  1  1  0  1  1  1  1  0  1

         1  1  1  0  1  1  1  1  0  1

         1  1  1  0  1  1  1  1  1  1

然后借助栈来解决迷宫问题。

代码如下:

Maze.h中:
#include <stack>
#include <assert.h>

struct Pos
{
	int _row;
	int _col;
};
//建立迷宫
void GetMaze(int *arr, int n)
{
	assert(arr);
	FILE  *fout ;
	fout = fopen("F:\\test.txt", "r");
	assert(fout);
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; )
		{
			int a = fgetc(fout);
			if (a == '0'||a == '1')
			{
				arr[i * n + j] = a - '0';
				j++;
			}
		}
	}
}
//走迷宫
bool SearchMazePath(int *arr, int n, Pos entry, stack<Pos>& paths)
{
	assert(arr);
	paths.push(entry);
	while (!paths.empty())
	{
		Pos cur = paths.top();
		arr[cur._row *n + cur._col] = 2;//走过的路程标记为2
		if (cur._col == n - 1)
		{
			return true;
		}
		//上
		Pos next = cur;
		--next._row;
		if (next._row >= 0&&arr[next._row *n + next._col] == 0)
		{
			paths.push(next);
			continue;
		}
		//下
		next = cur;
		++next._row;
		if (next._row <= n-1&&arr[next._row *n + next._col] == 0)
		{
			paths.push(next);
			continue;
		}
		//左
		next = cur;
		--next._col;
		if (next._col >= 0&&arr[next._row *n + next._col] == 0)
		{
			paths.push(next);
			continue;
		}
		//右
		next = cur;
		++next._col;
		if (next._col <= n-1&&arr[next._row *n + next._col] == 0)
		{
			paths.push(next);
			continue;
		}
		paths.pop();//都不满足,往回返
	}
	return false;
}
//打印
void Print(int *arr, int n)
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << arr[i*n + j] << " ";
		}
		cout << endl;
	}
}
test.cpp中:
#include <iostream>
using namespace std;
#include "Maze.h"
void Test()
{
	int a[10][10] = {};
	GetMaze((int*)a, 10);
	Print((int*)a, 10);

	Pos sp;
	sp._row = 2;
	sp._col = 0;
	stack<Pos>paths;
	cout << SearchMazePath((int*)a, 10, sp, paths) << endl;
	Print((int*)a,10);
}
int main()
{
	Test();
	system("pause");
	return 0;
}