⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph.cpp

📁 实现走迷宫的功能
💻 CPP
字号:
#include<iostream>
#include<Stack>
using namespace std;
//迷宫随机生成
#define ROW 10
#define COL 10

void DepthGraph()
{
	int design[ROW][COL]={0};
	int cur1=1,cur2=5;
	int maze[ROW][COL];
	for(int i = 0;i<ROW;i++)
	{
		for(int j = 0;j < COL;j++)
		{
			maze[i][j]=1;
		}
	}
	maze[1][5]=2;
	maze[ROW-2][COL-4]=3;
	stack<int*> graph;
	int start[2]={1,5};
	graph.push(start);
	design[1][5]=1;
	while(!graph.empty()&&(cur1>=0&&cur1<ROW)&&(cur2>=0&&cur2<COL))
	{
		int* p=graph.top();
		cur1=p[0];cur2=p[1];
		cout<<cur1<<cur2<<" ";
		graph.pop();
		if(maze[cur1][cur2]==1) maze[cur1][cur2]=0;	
		int sort1=1;//rand()%4;
		int sort2=0;//rand()%3;
		int sort3=1;//rand()%2; 
		switch(sort1)
		{
		case 0:
			if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
			{
				int a[2]={cur1+1,cur2};
				graph.push(a);
				design[cur1+1][cur2]=1;
			}
			switch(sort2)
			{
			case 0:
				if(cur1>=1&&design[cur1-1][cur2]!=1)
				{
					int a[2]={cur1-1,cur2};
					graph.push(a);
					design[cur1-1][cur2]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					break;
				case 1:
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
					int a[2]={cur1,cur2+1};
					graph.push(a);
					design[cur1][cur2+1]=1;
					}
					break;
				}
				break;
			case 1:
				if(cur2<COL-1&&design[cur1][cur2+1]!=1)
				{
					int a[2]={cur1,cur2+1};
					graph.push(a);
					design[cur1][cur2+1]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					break;
				case 1:
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}
					break;
				}
				break;
			case 2:
				if(cur2>=1&&design[cur1][cur2-1]!=1)
				{
					int a[2]={cur1,cur2-1};
					graph.push(a);
					design[cur1][cur2-1]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}
					break;
				case 1:
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					break;
				}
				break;
			}
			break;
		case 1:
			if(cur1>=1&&design[cur1-1][cur2]!=1)
			{
				int a[2]={cur1-1,cur2};
				graph.push(a);
				design[cur1-1][cur2]=1;
			}
			switch(sort2)
			{
			case 0:
				if(cur2<COL-1&&design[cur1][cur2+1]!=1)
				{
					int a[2]={cur1,cur2+1};
					graph.push(a);
					design[cur1][cur2+1]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					break;
				case 1:
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					break;
				}
				break;
			case 1:
				if(cur2>=1&&design[cur1][cur2-1]!=1)
				{
					int a[2]={cur1,cur2-1};
					graph.push(a);
					design[cur1][cur2-1]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					break;
				case 1:
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					break;
				}
				break;
			case 2:
				if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
				{
					int a[2]={cur1+1,cur2};
					graph.push(a);
					design[cur1+1][cur2]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					break;
				case 1:
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					break;
				}
				break;
			}
			break;
		case 2:
			if(cur2<COL-1&&design[cur1][cur2+1]!=1)
			{			
				int a[2]={cur1,cur2+1};
				graph.push(a);
				design[cur1][cur2+1]=1;
			}
			switch(sort2)
			{
			case 0:
				if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
				{
					int a[2]={cur1+1,cur2};
					graph.push(a);
					design[cur1+1][cur2]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}						
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					break;
				case 1:
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}		
					break;
				}
				break;
			case 1:
				if(cur2>=1&&design[cur1][cur2-1]!=1)
				{
					int a[2]={cur1,cur2-1};
					graph.push(a);
					design[cur1][cur2-1]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}		
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					break;
				case 1:
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}	
					break;
				}
				break;
			case 2:
				if(cur1>=1&&design[cur1-1][cur2]!=1)
				{
					int a[2]={cur1-1,cur2};
					graph.push(a);
					design[cur1-1][cur2]=1;
				}		
				switch(sort3)
				{
				case 0:
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					break;
				case 1:
					if(cur2>=1&&design[cur1][cur2-1]!=1)
					{
						int a[2]={cur1,cur2-1};  
						graph.push(a);
						design[cur1][cur2-1]=1;
					}
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					break;
				}
				break;
			}
			break;
		case 3:
			if(cur2>=1&&design[cur1][cur2-1]!=1)
			{
				int a[2]={cur1,cur2-1};
				graph.push(a);
				design[cur1][cur2-1]=1;
			}
			switch(sort2)
			{
			case 0:
				if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
				{
					int a[2]={cur1+1,cur2};
					graph.push(a);
					design[cur1+1][cur2]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}		
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					break;
				case 1:
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}
					break;
				}
				break;
			case 1:
				if(cur2<COL-1&&design[cur1][cur2+1]!=1)
				{
					int a[2]={cur1,cur2+1};
					graph.push(a);
					design[cur1][cur2+1]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}
					break;
				case 1:			
					if(cur1>=1&&design[cur1-1][cur2]!=1)
					{
						int a[2]={cur1-1,cur2};
						graph.push(a);
						design[cur1-1][cur2]=1;
					}
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					break;
				}
				break;
			case 2:
				if(cur1>=1&&design[cur1-1][cur2]!=1)
				{
					int a[2]={cur1-1,cur2};
					graph.push(a);
					design[cur1-1][cur2]=1;
				}
				switch(sort3)
				{
				case 0:
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					break;
				case 1:
					if(cur2<COL-1&&design[cur1][cur2+1]!=1)
					{
						int a[2]={cur1,cur2+1};
						graph.push(a);
						design[cur1][cur2+1]=1;
					}
					if(cur1<ROW-1&&design[cur1+1][cur2]!=1)
					{
						int a[2]={cur1+1,cur2};
						graph.push(a);
						design[cur1+1][cur2]=1;
					}
					break;
				}
				break;
			}
			break;
		}
		}
		for(int i = 0;i<ROW;i++)
	{
		for(int j = 0;j < COL;j++)
		{
			cout<<design[i][j]<<" ";
		}
		cout<<endl;
	}
		
		for(int k1 = 0;k1<ROW;k1++)
		{
			for(int k2=0;k2<COL;k2++)
			{
				cout<<maze[k1][k2]<<" ";
			}
			cout<<endl;
		}

}
	


void main()
{
   DepthGraph();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -