?? 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();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -