写了一个求解出迷宫路径的程序,问了好多老师都没找到问题,求帮助
#include<stdio.h>
#include<stdlib.h>
#define MAX_Z 10
#define MAX_X 3
#define MAX_Y 100
struct find_w
{
int x;
int y;
};
int main(void)
{
struct find_w stack[MAX_Y];
int i;
int j;
int m;
int n;
m=1;
n=1;
int count;
count=0;
int painter[MAX_Z][MAX_Z];
for(i=0;i<MAX_Z;i++)
for(j=0;j<MAX_Z;j++)
painter[i][j]=rand()%2;
i=0;
for(j=0;j<MAX_Z;j++)
{
painter[i][j]=1;
painter[j][i]=1;
}
i=MAX_Z-1;
for(j=0;j<MAX_Z;j++)
painter[j][i]=1;
i=MAX_Z-1;
for(j=0;j<MAX_Z;j++)
painter[i][j]=1;
painter[1][1]=0;
painter[MAX_Z-2][MAX_Z-2]=0;
for(i=0;i<MAX_Z;i++)
{
for(j=0;j<MAX_Z;j++)
printf("%d",painter[i][j]);
printf("\n");
}
while(m!=(MAX_Z-2)&&n!=(MAX_Z-2)) //当 mn 不为 出口时 不断循环
{
if(painter[m-1][n]==0) // 检测 下一点为 0时 可以走
{
painter[m][n]=1; // 把走过的位置标记为1
stack[count].x=m;// 用栈 记录走过的点
stack[count].y=n;
count++;
m--;
}
else if(painter[m][n-1]==0)
{
painter[m][n]=1;
stack[count].x=m;
stack[count].y=n;
count++;
n--;
}
else if(painter[m][n+1]==0)
{
painter[m][n]=1;
stack[count].x=m;
stack[count].y=n;
count++;
n++;
}
else if(painter[m+1][n]==0)
{
painter[m][n]=1;
stack[count].x=m;
stack[count].y=n;
count++;
m++;
}
else //当上下左右都不能走时 退栈 把 将该点标记 为 0
{
painter[m][n]=1;
count--;
m=stack[count].x;
n=stack[count].y;
painter[m][n]=0;
}
}
for(i=0;i<count;i++)
{
printf("<%d",stack[i].x);
printf("%d>",stack[i].y);
}
return 0;
}
#include<stdlib.h>
#define MAX_Z 10
#define MAX_X 3
#define MAX_Y 100
struct find_w
{
int x;
int y;
};
int main(void)
{
struct find_w stack[MAX_Y];
int i;
int j;
int m;
int n;
m=1;
n=1;
int count;
count=0;
int painter[MAX_Z][MAX_Z];
for(i=0;i<MAX_Z;i++)
for(j=0;j<MAX_Z;j++)
painter[i][j]=rand()%2;
i=0;
for(j=0;j<MAX_Z;j++)
{
painter[i][j]=1;
painter[j][i]=1;
}
i=MAX_Z-1;
for(j=0;j<MAX_Z;j++)
painter[j][i]=1;
i=MAX_Z-1;
for(j=0;j<MAX_Z;j++)
painter[i][j]=1;
painter[1][1]=0;
painter[MAX_Z-2][MAX_Z-2]=0;
for(i=0;i<MAX_Z;i++)
{
for(j=0;j<MAX_Z;j++)
printf("%d",painter[i][j]);
printf("\n");
}
while(m!=(MAX_Z-2)&&n!=(MAX_Z-2)) //当 mn 不为 出口时 不断循环
{
if(painter[m-1][n]==0) // 检测 下一点为 0时 可以走
{
painter[m][n]=1; // 把走过的位置标记为1
stack[count].x=m;// 用栈 记录走过的点
stack[count].y=n;
count++;
m--;
}
else if(painter[m][n-1]==0)
{
painter[m][n]=1;
stack[count].x=m;
stack[count].y=n;
count++;
n--;
}
else if(painter[m][n+1]==0)
{
painter[m][n]=1;
stack[count].x=m;
stack[count].y=n;
count++;
n++;
}
else if(painter[m+1][n]==0)
{
painter[m][n]=1;
stack[count].x=m;
stack[count].y=n;
count++;
m++;
}
else //当上下左右都不能走时 退栈 把 将该点标记 为 0
{
painter[m][n]=1;
count--;
m=stack[count].x;
n=stack[count].y;
painter[m][n]=0;
}
}
for(i=0;i<count;i++)
{
printf("<%d",stack[i].x);
printf("%d>",stack[i].y);
}
return 0;
}
...全文
相关推荐
《数据结构》 严蔚敏老师 迷宫求解算法(栈) C语言实现
本文档主要介绍了《数据结构》一书中严蔚敏老师讲解的迷宫求解算法,使用了C语言实现。该算法采用栈这一数据结构来探索迷宫,适合初学者理解栈的基本应用。迷宫被定义为一个二维数组,其中0表示可以通过的路径,非
C语言数据结构之迷宫问题
"本文介绍如何使用C语言和数据结构中的栈来解决迷宫问题,提供了一个具体的代码实例,该实例基于严蔚敏老师的《数据结构C语言版》进行完善。迷宫问题通常涉及在一个二维矩阵(迷宫)中寻找从起点到终点的可行路
C++数据结构迷宫求解课程设计(完整)
一、需求分析在本次试验中,设计的迷宫求解系统需要满足以下几个要求:1. 应用数据结构基础知识进行实际问题求解与分析。2. 编程实现算法,实现迷宫的编辑、求解和输出。3.
迷宫问题——数据结构课程设计迷宫问题完整版(含源代码).docx
致谢部分则感谢指导老师和团队成员的支持和帮助。七、参考文献列出所有参考的书籍、论文和其他资源,以表明研究和设计过程中的学术诚信。
数据结构课程设计—迷宫求解.doc
"数据结构课程设计—迷宫求解.doc"该文档是工业大学计算机与通信学院软件工程专业的一份课程设计任务,主题是“编制一个求解迷宫通路的程序”。这份设计由邓彬老师指导,学生柏云参与,旨在运用数据结构


