网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月26日漏签0天
c语言吧 关注:798,821贴子:4,356,797
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回c语言吧
>0< 加载中...

【求大神】一迷宫最短路径题,代码有点长,求来个大神指导哇~

  • 只看楼主
  • 收藏

  • 回复
  • 萏云流水忆平生
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
迷宫最短路径。。。完全不懂。。
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 1000
struct Position{
int x;
int y;
};
typedef struct node{
Position position[MAXSIZE];
Position prior[MAXSIZE];
int rear,front;
}SeqQuene,*PSeqQuene;

void main()
{
SeqQuene Quene;
int **maze;
int size;//the size of the maze
int i,j;//to control loops
Position CurPos,EndPos;
int flag=0;//indicates thar there is no path
//initial the sequence quene
Quene.front = 0;



  • 萏云流水忆平生
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Quene.rear = 0;
//initial the maze
printf("Please input the size of the maze:");
scanf("%d",&size);
size+=2;
maze = (int **)malloc(size*sizeof(int *));
for(i=0;i<size;i++)
maze[i]=(int *)malloc(size*sizeof(int));
printf("Please input to initial the maze:\n");
for(i=1;i<size-1;i++)
for(j=1;j<size-1;j++)
scanf("%d",maze[i]+j);
for(i=0;i<size;i++)
maze[0][i]=0;//0 indicates a wall there
for(i=0;i<size;i++)
maze[size-1][i]=0;



2025-06-26 04:49:45
广告
  • 萏云流水忆平生
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
for(i=0;i<size;i++)
maze[i][0]=0;
for(i=0;i<size;i++)
maze[i][size-1]=0;
printf("The maze you input is like following:\n");
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
printf("%d ",maze[i][j]);
printf("\n");
}//到这里迷宫输入和初始化完毕,旁边有一堵墙
printf("Please input the start position:");
scanf("%d %d",&CurPos.x,&CurPos.y);
printf("Please input the endding position:");
scanf("%d %d",&EndPos.x,&EndPos.y);

//开始进行广度遍历



  • 萏云流水忆平生
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Quene.position[Quene.rear].x=CurPos.x;
Quene.position[Quene.rear++].y=CurPos.y;
maze[CurPos.x][CurPos.y]=2;//表示这个点进入了队列

while(Quene.front != Quene.rear)
{
CurPos.x=Quene.position[Quene.front].x;
CurPos.y=Quene.position[Quene.front++].y;
maze[CurPos.x][CurPos.y]=3;

if(CurPos.x==EndPos.x && CurPos.y==EndPos.y)
{

for(i=Quene.front-1;i>=0;i--)
{
if(CurPos.x==Quene.position[i].x && CurPos.y==Quene.position[i].y)
{



  • 萏云流水忆平生
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
maze[Quene.position[i].x][Quene.position[i].y]=8;
CurPos.x=Quene.prior[i].x;
CurPos.y=Quene.prior[i].y;
}//if
}//for
flag=1;//indicate the program find the path
}//if
else
{
if(maze[CurPos.x+1][CurPos.y]==1)
{
Quene.position[Quene.rear].x=CurPos.x+1;
Quene.position[Quene.rear].y=CurPos.y;
Quene.prior[Quene.rear].x=CurPos.x;
Quene.prior[Quene.rear++].y=CurPos.y;



  • 萏云流水忆平生
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
}//if
if(maze[CurPos.x][CurPos.y+1]==1)
{
Quene.position[Quene.rear].x=CurPos.x;
Quene.position[Quene.rear].y=CurPos.y+1;
Quene.prior[Quene.rear].x=CurPos.x;
Quene.prior[Quene.rear++].y=CurPos.y;
}//if
if(maze[CurPos.x-1][CurPos.y]==1)
{
Quene.position[Quene.rear].x=CurPos.x-1;
Quene.position[Quene.rear].y=CurPos.y;
Quene.prior[Quene.rear].x=CurPos.x;
Quene.prior[Quene.rear++].y=CurPos.y;
}//if



  • 萏云流水忆平生
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
if(maze[CurPos.x][CurPos.y-1]==1)
{
Quene.position[Quene.rear].x=CurPos.x;
Quene.position[Quene.rear].y=CurPos.y-1;
Quene.prior[Quene.rear].x=CurPos.x;
Quene.prior[Quene.rear++].y=CurPos.y;
}//if
}//else
}//while

//print the result
if(flag)
{
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
printf("%d ",maze[i][j]);
printf("\n");
}//for
}
else
printf("There is no path!\n");
getchar();
getchar();
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示