迷宫求解算法的思路【C】

迷宫求解算法的思路【C】

迷宫的问题比较复杂,而且这种问题交给计算机来解决反而浪费时间(计算机在某些方面表现非常傻,就是“勤奋的傻瓜”),但是十分复杂的问题还可以使用一下。
目前还没有做过这种题目,但是自己还不太会写,省的到时候也没用书看,代码想不起来,留作备份吧。

#include <stdio.h>
#include <stdlib.h>

//迷宫定义如下
#define m 6
#define n 8;
int maze[m+2][n+2];

//move数组定义如下,共8个方向
typedef struct
{
	int x,y;
} item;
item move[8];//共8个方向

//新点的坐标
i=x+move[v].x;
j=y+move[v].y;

//栈的定义
typedef struct
{
	int x,y,d;//横纵坐标及其方向
} datatype;//这是一个数据类型

typedef struct snode
{
	datatype data;
	struct snode *next;
} StackNode;
*LinkStack;

//迷宫求解算法
int path(int maze[][],item move[])
{
	StackNode *s;
	datatype temp;
	int x,y,d,i,j;
	s=Init_SeqStack();//创建一个栈的函数
	temp.x=1;
	temp.y=1;
	temp.d=-1;//方向置为-1,循环前先加1
	Push_SeqStack(s,temp);//将temp入栈s
	while(!Empty_SeqStack(s))
	{
		Pop_SeqStack(s,&temp);
		x=temp.x;
		y=temp.y;
		d=temp.d+1;
		while(d<8)
		{
			i=x+move[d].x;
			j=y+move[d].y;
			if(maze[i][j]==0)
			{
				temp= {x,y,d};
				Push_SeqStack(s,temp);
				x=i;
				y=j;
				maze[x][y]=-1;
				if(x==m&&y==n)
					return 1;
				else
					d=0;
			}
			else
				d++;
		}
	}
	return 0;//迷宫无路可走
}

int main()
{

	return 0;
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摆烂.MVP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值