问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

设计算法、编写程序找出由右上角的门进入,由左下角的门离开以下迷宫的路...

发布网友 发布时间:2024-10-19 08:48

我来回答

2个回答

热心网友 时间:2024-12-02 05:20

//走迷宫
//迷宫的布局可能与你的原图有差异,自己可以修改布局,但不要改迷宫的大小尺寸 
//程序仅仅是找出一条可通行的路径,没有作找最优路径的选择。 
#include <stdio.h>
int a[20][20];   //记录迷宫的布局 
int ff[4][2]={1,0,-1,0,0,1,0,-1};  //行走迷宫的四个方向 
int place[360][2];   //记录走的步数 
int fx=2,fy=19,tx=18,ty=1; //设置起点(2,19),终点(18,1) 
int issame(int n){
int i;
for(i=0;i<n;i++)
if(place[n][0]==place[i][0] && place[n][1]==place[i][1])
return 1;
return 0;
}
int nextstep(int n){  //迷宫下一步行走 
int i,k;
for(i=0;i<4;i++){
place[n][0]=place[n-1][0]+ff[i][0];
place[n][1]=place[n-1][1]+ff[i][1];
if (place[n][0]>19 || place[n][0]<1) continue; //行越界 
if (place[n][1]>19 || place[n][1]<1) continue; //列越界 
if (a[place[n][0]][place[n][1]]!=1) continue; //不是1
if (place[n][0]==tx && place[n][1]==ty) return n; //到终点
if (issame(n)==1) continue;  //走老路 
k=nextstep(n+1);
if (k!=0) return k; 
}
return 0;
}
int migong(){  //行走迷宫初始化 
place[0][0]=fx;place[0][1]=fy;
return nextstep(1);
}
void printit(){   //显示迷宫 
int i,j;
for(i=1;i<=19;i++){
for(j=1;j<=19;j++)
if (a[i][j]==2) printf("  ");
else printf("%2d",a[i][j]);
printf("\n");
}
}
int main(){
char s[20][20]={
"0000000000000000000",
"0111111111111111111",
"0000000001000001000",
"0111110101111101111",
"0001010100000100000",
"0101010101110111111",
"0101000100010000010",
"0111111111110111111",
"0100000000010100000",
"0101111111010101111",
"0101000111010101010",
"0111011111010111010",
"0100010000000100010",
"0101011111110101111",
"0101000000010101011",
"0101010101011101011",
"0101010101000001011",
"1101110111111111010",
"0000000000000000000"
};
int i,j,n;
for(i=1;i<=19;i++)
for(j=1;j<=19;j++)
a[i][j]=s[i-1][j-1]-48;
//显示迷宫
printf("原始迷宫模样\n");
printit();
n=migong();
if (n==0) 
printf("没有路径到达\n");
else{
for(i=0;i<=n;i++)
a[place[i][0]][place[i][1]]=2;
printf("走迷宫的路径显示\n");
printit();
}
}

热心网友 时间:2024-12-02 05:12

用A*(A star)算法,可以解决您的问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕甲状腺激素偏高正常吗 怀孕检查甲状腺素偏高是什么原因引起的 怀孕了甲状腺功能偏高是怎么回事 怀孕甲状腺高是什么引起的 孕中期促甲状腺激素偏高是什么原因 重钢别墅靠谱吗 重刚别墅的致命缺点 重钢别墅的优点和缺点各是什么 积食可以吃什么 车子换了点火线圈,分缸线,火花塞以后车子打不着。这是什么原因 什么地方可以拍真人版cosplay 姐姐对妹妹儿女的叫法 有拍cosplay摄影的吗 成都哪有拍COSPLAY照的,(专业动漫的)服装要自己准备吗?大概要多少钱拍... 武汉除了最终幻想以外,有哪家摄影工作室,可以拍cosplay类型的照片... cosplay的app有哪些? 脉弦细滑是什么意思 三菱空调定时的方法 三菱空调怎么开定时? 怎么设定三菱空调的定时功能? 滴滴怎么看服务分详情 C# WPF开源控件库HandyControl用法举例 副乳危害大吗 vivo手机黑屏了怎么恢复而且一直都显示充电状态 ...按钮,这个按钮上边有一个图标 和文字 如何实现? 最强“软饭王”李春平!获好莱坞女星70亿美金遗产,晚年凄惨无比 考研成功可以弥补高考的失利吗? 梦到从要桥上过河但河水涨得太快没来的及过去桥就被水淹没了,只得又退... 陆小曼的名言 哪些菜适合煲汤 如果心情不好了要怎么自我调节阿「除了向别人倾诉外」? 心情不好时,又不愿向人倾诉,该如何发泄? 肝功能十二项包括哪些 稚子弄冰古诗晓是什么意思 稚子弄冰古诗 稚子弄冰描绘了什么场景 ...主要通过什么和什么两方面描绘了一幅稚气满纸而又诗? 交通事故中,我方全责,买了交强险,伤残费用由保险公司负责还是由我负责... 出交通事故对方人受伤了,我方只保强制险怎么样赔偿对方,我全责 足浴盆不加热是为什么 为什么洗脚店里的水温下降的慢 从北京去海口怎么走 乘坐飞机北京到海南需要多少时间? 内乡县六小十字路口向南100尊驰汽车中心的拼音? 幼儿园老师疫情温馨话语精选120句 这上面的文字他想表达的是什么意思? 请问老师这个上面文字是什么意思 北京到海口的T201多少钱? 我们一行三人不懂英语或者德语,去维也纳旅游,又没有当地兼职导游的_百 ... 北京到三亚火车每天都有吗 北京的海南的T201次列车票价是多少阿