迷宫小程序
来源:互联网 发布:wish产品优化技巧 编辑:程序博客网 时间:2024/05/16 00:39
#include "stdafx.h"
#include "iostream"
#include "malloc.h"
using namespace std;
#define row 7
#define column 6
struct node
{
int x;
int y;
int d;
};
typedef struct node_1
{
node move[20];
int top;
}Stack;
void init_stack(Stack &stack)
{
stack.top=-1;
}
void push_stack(Stack &stack,int a,int b,int c)
{
stack.top++;
stack.move[stack.top].x=a;
stack.move[stack.top].y=b;
stack.move[stack.top].d=c;
}
void pop_stack(Stack &stack)
{
stack.top--;
}
int search_d(int p[][column],int m,int n,int d)
{
switch(d)
{
case 0:return p[m][n+1];
break;
case 1:return p[m+1][n+1];
break;
case 2:return p[m+1][n];
break;
case 3:return p[m+1][n-1];
break;
case 4:return p[m][n-1];
break;
case 5:return p[m-1][n-1];
break;
case 6:return p[m-1][n];
break;
case 7:return p[m-1][n+1];
break;
}
}
void print_map(Stack &stack) //打印出当时的路径
{
int i;
for(i=0;i<=stack.top;i++)
{
printf("(%d,%d) ",stack.move[i].x,stack.move[i].y);
}
printf("(%d,%d)\n",row-2,column-2);
}
void move_map(Stack &stack,int p[][column])//小球走的过程
{
int m=1,n=1,d=0;
while(1)
{
while(d<8)
{
if(search_d(p,m,n,d)==0)
{
push_stack(stack,m,n,d);
p[m][n]=-1;
switch(d)
{
case 0:{n++;}
break;
case 1:{m++;n++;}
break;
case 2:{m++;}
break;
case 3:{m++;n--;}
break;
case 4:{n--;}
break;
case 5:{m--;n--;}
break;
case 6:{m--;}
break;
case 7:{m--;n++;}
break;
default:printf("The error:\n");
break;
}
d=0;
}
else d++;
if(m==row-2&&n==column-2) break;
}
if( 8 == d)
{
d=stack.move[stack.top].d+1;
m=stack.move[stack.top].x;
n=stack.move[stack.top].y;
pop_stack(stack);
}
if(m==row-2&&n==column-2)
{
print_map(stack);
d=stack.move[stack.top].d+1;
m=stack.move[stack.top].x;
n=stack.move[stack.top].y;
pop_stack(stack);
p[m][n]=0;
}
if(m==1&&n==1) break;
}
}
//void ssss()
//{
// while (1)
// {
// while (1)
// {
// int a = 0;
// if(1)
// {
// a++;
// if (a>0)
// {
//
// for(int i = 0; i<= 10; i++ )
// {
//
// break; //结束最近的循环,不判断,switch也算是循环
// continue; //结束最近的循环,判断
// }
//
//
// break;
// }
// break;
// }
// }
// }
//}
int _tmain(int argc, _TCHAR* argv[])
{
/*ssss();*/
Stack stack;
int p[row][column]={{1,1,1,1,1,1},{1,0,0,1,1,1},{1,1,0,0,1,1},{1,1,1,0,0,1},{1,1,1,1,0,1},{1,1,1,1,0,1},{1,1,1,1,1,1}};
init_stack(stack);
move_map(stack,p);
system("pause");
}
- 迷宫小程序
- 迷宫小程序
- 【练手小程序——01】迷宫问题
- 一个创建迷宫并寻找通道的小程序
- 迷宫程序
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- 小希的迷宫
- I2C总线信号时序总结
- mysql函数不求人
- 【转】Linux系统密码忘记后的五种恢复方法
- poj1036 Gangsters
- Tarjan算法求割,桥,块(点双连通分支),边双连通分支总结
- 迷宫小程序
- mysql的字符串函数
- HDU 2114 水题
- mysql5异常处理
- [AI]深度优先搜索
- mysql5异常处理(2)
- TIB自动化测试快讯 -- 自动化测试空间一周精选(2011-10-16)
- S3C2440上touchscreen触摸屏驱动 .
- ASP.NET 页面间传递参数的方法