📄 graph.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 + -