社区
C语言
帖子详情
哪位大虾有迷宫的源程序
intermaster
2002-07-03 05:36:34
请问那位大虾有c写的迷宫源程序?请发给:yang4666@sina.com
谢谢!
...全文
72
2
打赏
收藏
哪位大虾有迷宫的源程序
请问那位大虾有c写的迷宫源程序?请发给:yang4666@sina.com 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
atlantis13579
2002-07-03
打赏
举报
回复
转来的,广度优先搜索
------------------------------------------------------------------
#include <iostream.h>
#include <memory.h>
#define SX 11 // 宽
#define SY 10 // 长
int dx[4]={0,0,-1,1}; // 四种移动方向对x和y坐标的影响
int dy[4]={-1,1,0,0};
char Block[SY][SX] = // 障碍表
{{ 1,1,1,1,1,1,1,1,1,1,1 },
{ 1,0,1,0,1,0,0,0,0,0,1 },
{ 1,0,1,0,0,0,1,0,1,1,1 },
{ 1,0,0,0,1,0,1,0,0,0,1 },
{ 1,0,1,1,0,0,1,0,0,1,1 },
{ 1,0,1,0,1,1,0,1,0,0,1 },
{ 1,0,0,0,0,0,0,0,1,0,1 },
{ 1,0,1,0,1,0,1,0,1,0,1 },
{ 1,0,0,1,0,0,1,0,1,0,1 },
{ 1,1,1,1,1,1,1,1,1,1,1 }};
int AllComplete=0; // 全部完成标志
int LevelNow=1, // 搜索到第几层
Act, // 现在的移动方向
ActBefore, // 现在的节点的父节点
MaxAct=4, // 移动方向总数
ActNow, // 现在的节点
tx,ty; // 当前坐标
int LevelFoot[200], // 每一层最后的节点
ActHead[3000]; // 每一个节点的父节点
char AllAct[3000]; // 每一个节点的移动方向
char ActX[3000],
ActY[3000]; // 按节点移动后的坐标
char Table[SY][SX]; // 已到过标记
char TargetX=9,
TargetY=8; // 目标点
int ActOK( );
int Test( );
int ActOK( )
{
tx=ActX[ActBefore]+dx[Act-1]; // 将到点的x坐标
ty=ActY[ActBefore]+dy[Act-1]; // 将到点的y坐标
if ((tx>=SX)||(tx<0)) // x坐标出界?
return 0;
if ((ty>=SY)||(ty<0)) // y坐标出界?
return 0;
if (Table[ty][tx]==1) // 已到过?
return 0;
if (Block[ty][tx]==1) // 有障碍?
return 0;
return 1;
}
int Test( )
{
if ((tx==TargetX)&&(ty==TargetY)) // 已到目标
{
int act=ActNow;
while (act!=0)
{
cout<<(int)AllAct[act]; // 一步步向前推出所有移动方向
act=ActHead[act]; // 所以输出倒了过来
}
return 1;
}
return 0;
}
void main()
{
memset(Table,0,sizeof(Table));
memset(LevelFoot,0,sizeof(LevelFoot));
memset(ActHead,0,sizeof(ActHead));
memset(AllAct,0,sizeof(AllAct));
memset(ActX,0,sizeof(ActX));
memset(ActY,0,sizeof(ActY)); // 变量清零
LevelNow=1;
LevelFoot[1]=0;
LevelFoot[0]=-1;
ActX[0]=1;
ActY[0]=1;
while (!AllComplete)
{
LevelNow++; // 开始搜索下一层
LevelFoot[LevelNow]=LevelFoot[LevelNow-1];
// 新一层的尾节点先设为与上一层相同
for (ActBefore=LevelFoot[LevelNow-2]+1;
ActBefore<=LevelFoot[LevelNow-1];
ActBefore++) // 对上一层所有节点扩展
{
for (Act=1;Act<=MaxAct;Act++) // 尝试所有方向
{
if ((ActOK( )) && (!AllComplete)) // 操作可行?
{
LevelFoot[LevelNow]++; // 移动尾指针准备加入新
节点
ActNow=LevelFoot[LevelNow]; // 找到加入新节点位置
ActHead[ActNow]=ActBefore; // 置头指针
AllAct[ActNow]=Act; // 加入新节点
ActX[ActNow]=tx;
ActY[ActNow]=ty; // 存储移动后位置
Table[ty][tx]=1; // 做已到过标记
if (Test( )) AllComplete=1; // 完成?
}
}
}
}
}
jazry
2002-07-03
打赏
举报
回复
早期的數據結構書上有,基本算法是用遞歸和回溯,先在四周鑲條阻塞邊,這樣保證每條邊都有八個相鄰節點,再從起點開始查找所有可能通過的路徑,為了保證不重複經過的節點可以置為-1.這樣可以達到所有的路徑,然後再用回溯找到最短路徑.
c 实现走
迷宫
流程图_求教c
迷宫
流程图
代码如下不是很完善望
大虾
也能帮忙修改修改/*4.3.3
源程序
*/#include#include#include#include#include#defineN20/*
迷宫
的大小,可改...代码如下 不是很完善 望
大虾
也能帮忙修改修改 /*4.3.3
源程序
*/ #include #include #include #include #include #define N 20/*
迷宫
的大小...
我不是世界编程比赛第一名
前几天发了一篇在网上红得发紫《据说是世界编程大赛第一名写的程序 》, http://blog.csdn.net/Q_Jizi/archive/2007/05/23/1621711.aspx 短短的几十行16进制代码,却能完成显示一段3D
迷宫
动画,同时播放音乐的功能。将几g的东西压缩到几k大,显示了汇编技术的强大。我一直在想,按照这段程序的压缩技术,以后图形图像和音乐文件的压缩岂不是变
实用代码脚本易语言源码图片组操作类
实用代码脚本易语言源码图片组操作类
升级版本基于多目标粒子群算法的微电网优化调度【风光、储能、柴油、燃气、电网交互】(Matlab代码实现)
内容概要:本文介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度模型,综合考虑风能、光伏、储能系统、柴油发电机、燃气轮机以及与主电网之间的能量交互等多种分布式能源的协同运行。通过构建以运行成本最小化、碳排放最低化和系统可靠性最优化为目标的多目标优化模型,利用Matlab平台实现MOPSO算法求解,完成对微电网在不同运行场景下的能量管理与调度方案优化。该模型能够有效平衡经济性与环保性之间的关系,适用于含多类型分布式电源的复杂微电网系统,具有较强的工程应用价值和科研参考意义; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事微电网、智能电网、综合能源系统、可再生能源集成与优化调度等领域研究的专业人士; 使用场景及目标:①用于多能源耦合微电网系统的协同优化调度研究;②支持多目标智能优化算法在能源系统中的建模与求解实践,帮助用户掌握MOPSO在实际工程问题中的应用方法;③为学术论文复现、毕业设计、科研项目开发提供完整的代码实例与技术支撑; 阅读建议:建议读者结合Matlab代码与理论文档,深入理解目标函数构建、约束条件处理及Pareto最优解集生成机制,重点关注算法参数设置、多目标权衡分析与结果可视化,并可通过调整能源配置或引入新约束进行二次开发与创新研究。
东北大学 人文选修 文物精品与中华文明 知识点整理(选择+填空)
东北大学 人文选修 文物精品与中华文明 知识点整理(选择+填空)
C语言
70,038
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章