非递归数组迷宫由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“迷宫非递归算法”。
用于解决迷宫问题:
#include “stdafx.h”
#define Max 100
#define MMM 1000
int main(intargc, char* argv[])
{int i=0,j=0,x=0,y=0,z=0;
int a[Max][Max];
int labyrinth(int a[Max][Max],intx,int y);
printf(“nIt's a funny game!n”);
printf(“nYou can create a labyrinth And find its route via this programninsructions:n”);printf(“1.'1'stands for ways obstruent n2.'0' stands for ways availablen”);printf(“nThe size of your labyrinth is :n”);
scanf(“%d,%d”,&x,&y);
printf(“nNow Enter your numbers:n”);
for(i=1;i
for(j=1;j
{scanf(“%d ”,&a[i][j]);}
for(j=0;j
{
a[0][j]=1;
a[x+1][j]=1;
}
for(i=0;i
{
a[i][0]=1;
a[i][y+1]=1;
}
a[x+1][y+1]=1;
for(i=0;i
for(j=0;j
{
printf(“%d”,a[i][j]);
if(j==y+1)
printf(“n”);
}
labyrinth(a,x+1,y+1);
return 0;
}
int labyrinth(int a[Max][Max],intm,int n)
{
int STACK[MMM][3];
int move[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1-1}};intp,i,j,g,h,top=0,k=0;
a[1][1]=2;
STACK[0][0]=1;
STACK[0][1]=1;
STACK[0][2]=1;
while(top>=0)
{
i=STACK[top][0];
j=STACK[top][1];
k=STACK[top--][2]+1;
while(k
{
g=i+move[k][0];
h=j+move[k][1];
if(g==m-2&&h==n-2&&a[g][h]==0)
{
printf(“We've got a way!n”);
for(p=0;p
printf(“%2d,%2d”,STACK[p][0],STACK[p][1]);printf(“%2d,%2d”,i,j);
printf(“%3d,%3d”,m-1,n-1);
return 1;
}
if(a[g][h]==0)
{
a[g][h]=2;
STACK[++top][0]=i;
STACK[top][1]=j;
STACK[top][2]=k;
i=g;j=h;k=0;
}
k++;
}} printf(“Your labyrinth has no ways outn”);return 0;
王家沟小学2009~2010年度第一学期数学教研组工作总结本学期以来,我们以现代教育思想、现代教育理念为指导,认真贯彻落实小学数学新课程标准为契机,认真贯彻落实学校本期工作意见......
王家沟小学2012~2013学年度第一学期数学教研组工作总结本学期以来,我们以现代教育思想、现代教育理念为指导,认真贯彻落实小学数学新课程标准为契机,认真贯彻落实学校本期工作意......
数据的处理与递归循环方法解决问题教学课时:1课时 教学目标:知识与技能:学会用办公软件熟练处理数据,掌握VB中重要的语句和方法,并能解决实际生活中遇到的问题。过程与方法:通过具......
数组典型例题数组应用程序设计 1、从键盘输入11个数存入一维数组中,先输出下标为奇数的元素,再输出下标为偶数的元素。main() {float a[11]; int i; for(i=0;iscanf("%f",&a......
五数组工作总结转眼间,一个紧张、充实、有序、奋进的学期又结束了。我们五年级数学教研组紧紧围绕实验小学办学目标,积极努力实践学校的各项办学理念,本着以学生发展为本,服务家......