| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4235 人关注过本帖
标题:[求助]急求 很急 迷宫问题c程序
只看楼主 加入收藏
tiantian403t
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-24
收藏
 问题点数:0 回复次数:18 
[求助]急求 很急 迷宫问题c程序

急求 很急 迷宫问题c程序

[迷宫问题]在迷宫中求从入口到出口的一条简单路径。迷宫可用下图中所示的方块来表示,每个方块或者是通道(用空白方块表示)或者是墻(用带阴影的方块表示)。

搜索更多相关主题的帖子: 迷宫 
2006-05-24 22:22
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
我怎么能知道你上美女呢?如果真是美女,马上就给你程序,2分钟,如果不是,那要等了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-24 23:12
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 
贴子里面有,找下就能找到

明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-25 13:34
风之语录
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-3-15
收藏
得分:0 
靠,二楼的垃圾

2006-05-26 13:21
ada518618
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2006-3-27
收藏
得分:0 
呵呵!2楼的还真幽默!

Eclipse!尽管我现在不懂祢,可是我却对你情有独钟……
2006-05-26 19:39
tiantian403t
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-24
收藏
得分:0 

我真的很急,谢谢你们了

2006-05-27 18:43
tiantian403t
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-24
收藏
得分:0 
2006-05-27 18:43
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 

我给你找了个,你看看行不,不是我写的.
#include"stdio.h"
#include"malloc.h"
#include"stdlib.h"

typedef struct
{
int x,y;
int ord;
int der;

}ElemType;

typedef struct
{
ElemType *base;
ElemType *top;
int stacksize;
}Sqstack;

void InitStack(Sqstack &S);
void Push(Sqstack &S, ElemType e);
int Pop(Sqstack &S,ElemType &e);
void NextPos(int *x, int *y, int der);


void InitStack(Sqstack &S)
{
S.base=(ElemType*)malloc(sizeof(ElemType)*INIT_SIZE);
if(!S.base) exit(1);
S.top=S.base;
S.stacksize=INIT_SIZE;
}

void Push(Sqstack &S, ElemType e)
{
if(S.top-S.base==S.stacksize)
{
S.base=(ElemType*)malloc(sizeof(ElemType)*(INIT_SIZE+INCREMENT));
S.top=S.base+S.stacksize;
S.stacksize+=INCREMENT;
}

*(S.top++)=e;
}

int Pop(Sqstack &S,ElemType &e)
{
if(S.top==S.base) return 0;
e=*(--S.top);

return 1;
}

void NextPos(int *x, int *y, int der)
{
switch(der)
{
case 1:
++(*x);
break;
case 2:
++(*y);
break;
case 3:
--(*x);
break;
case 4:
--(*y);
break;
default:
break;

}
}


int main()
{
Sqstack S;
int x,y,step;

ElemType e,*P;
char maze[10][10]=
{
{'#',' ','#','#','#','#','#','#','#','#'},
{'#',' ',' ','#',' ',' ',' ','#',' ','#'},
{'#',' ',' ','#',' ',' ',' ','#',' ','#'},
{'#',' ',' ',' ',' ','#','#',' ',' ','#'},
{'#',' ','#','#','#',' ',' ',' ',' ','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ','#',' ',' ','#'},
{'#',' ','#','#','#',' ','#','#',' ','#'},
{'#','#',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#','#','#','#','#','#','#',' ','#'},

};

printf("The needed found maze are as follows:\n\n");
for(x=0;x<10;x++)
{
for(y=0;y<10;y++)
printf("%c",maze[x][y]);
printf("\n");
}

InitStack(S);
P=S.base;
x=0; y=1;
step=1;
do
{
if(maze[x][y]==' ')
{
maze[x][y]='1';
e.x=x;
e.y=y;
e.ord=step;
e.der=1;

Push(S,e);
if(x==9&&y==8) break;
NextPos(&x,&y,1);
step++;

}
else
{
if(S.base!=S.top)
{
Pop(S,e);
while(e.der==4)
{
maze[e.x][e.y]='@';
Pop(S, e);
}
}


if(e.der<4)
{
e.der++;
Push(S, e);
x=e.x;
y=e.y;
NextPos(&x, &y, e.der);
}
}



} while(S.top!=S.base);

printf("\n找到路径: 用1表示走的路,@表走的死路,#表墙: \n\n");
for(x=0;x<10;x++)
{ for(y=0;y<10;y++)
printf("%c",maze[x][y]);
printf("\n");
}
printf("坐标表示如下:\n\n");

while(S.base!=S.top)
{
if(P==S.base)
{
printf("(%d,%d)", (*S.base).x, (*S.base).y);
S.base++;
}
else
{
printf(" -> (%d,%d)", (*S.base).x, (*S.base).y);
S.base++;
}

}
printf("\n");


free(P);
return 0;
}


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-27 18:53
tiantian403t
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-24
收藏
得分:0 

谢谢你,我想要一个自己能随便输迷宫的,在求最短路径时要用多种方法的,谢谢了,很急

2006-05-27 19:19
tiantian403t
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-24
收藏
得分:0 
2006-05-27 19:32
快速回复:[求助]急求 很急 迷宫问题c程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022058 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved