请算法高手帮忙。

菲斯可儿 2005-07-04 09:47:14
本人现在在写一个小游戏,遇到了一个最短路径的问题。
有如下一张地图数组:

22220020
21010101
20000000
01012101
00021212
20220202
12101012
00000222

其中,2表示通路,0表示怪物,1表示墙。
2可通过,0被打死后可通过(即变成了2),1不可通过。
现在,人可能处于地图中的任何一个“2”处,怎样设计一个算法,得到离人最近的可以达到的怪物(即通过的路径都是“2”)?
...全文
240 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodboyws 2005-07-05
  • 打赏
  • 举报
回复
呵呵,汗,想得简单了
菲斯可儿 2005-07-05
  • 打赏
  • 举报
回复
呵呵,还是谢谢 goodboyws 。

我最终采用lanphaday所说的dijkstra算法。

谢谢大家,谢谢热心的兄弟们。
daseny 2005-07-04
  • 打赏
  • 举报
回复
http://drew.nease.net/algorithm/shortpath.htm
其实也就是这里说的Dijkstra算法,用Open Close。
你的动态目标的确不能用A*。
daseny 2005-07-04
  • 打赏
  • 举报
回复
以点[i][j]为根构造树,递归广度遍历所有相邻点,需要检查是否已遍历过。
如果要求效率,可以用数组或链表只记录当前层的节点,用bool数组记录是否访问过。
菲斯可儿 2005-07-04
  • 打赏
  • 举报
回复
A*算法我大致看了下,很复杂,而且和我的要求不大一致,它是已知目的地的搜索算法,而我并没有明确的目的地。

goodboywsd的算法并不能得到最近的怪物吧?
菲斯可儿 2005-07-04
  • 打赏
  • 举报
回复
我的算法很差,请问谁有和这个问题相关的源代码吗?

哎,一点思路都没有... ...
xqk 2005-07-04
  • 打赏
  • 举报
回复
up
oyljerry 2005-07-04
  • 打赏
  • 举报
回复
参考A Star算法
daseny 2005-07-04
  • 打赏
  • 举报
回复
需要自己生成树的。
goodboyws 2005-07-04
  • 打赏
  • 举报
回复
很简单
for (int i=0; i<8;i++)
{
for (int j=0; j<8; j++)
{
if (a[i][j] == 0)
return i;
else if (a[i][j] == 1)
break;
else
conitue;
}
}
vcmute 2005-07-04
  • 打赏
  • 举报
回复
遍历+A*?
daseny 2005-07-04
  • 打赏
  • 举报
回复
广度遍历就行吧,记得数据结构c语言版好像有,严蔚敏那个。
daseny 2005-07-04
  • 打赏
  • 举报
回复
不好意思说错了,上次其实是最上边的怪物,这次才是最左边的^_^
goodboyws 2005-07-04
  • 打赏
  • 举报
回复
呵呵,这样得到的是人处于地图起点时,最近的怪物
for (int j=0; j<8;j++)
{
for (int i=0; i<8; i++)
{
if (a[i][j] == 0)
return i;
else if (a[i][j] == 1)
break;
else
conitue;
}
}
按照楼主的需求,只要考虑本人的位置就可以了,可能有些麻烦,变化也不大
daseny 2005-07-04
  • 打赏
  • 举报
回复
to goodboyws(深夜不眠者)
“人可能处于地图中的任何一个“2”处”,你的代码只是找最左边的一个怪物罢了。
赖勇浩 2005-07-04
  • 打赏
  • 举报
回复
Dijkstra算法,参考一下图论相关书.
goodboyws 2005-07-04
  • 打赏
  • 举报
回复
肯定是可以的,只不过我好像把i和j搞混了,问题可能在于如果数据量大的话,算法有待优化
一类资源描述:Java ASP系统毕业设计资源 1. 概述:该资源集中于Java与ASP结合的Web系统毕业设计。对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容: - 论文:涵盖了整个Java ASP Web系统的基础知识,设计意图、需求概述、系统结构与设计哲学、相关技术的深入探索等。学生可以从论文中理解项目的全局构想和关键设计决策。 - 设计文档:详细梳理了系统的构建过程,包含需求分析、系统框架设计、数据库规划、界面布局、功能模块划分等。此文档将引导学生逐步实现和调试系统。 - 源代码:提供Java与ASP整合的Web系统的完备代码,从前端界面代码(HTML、CSS、JavaScript)到后端的Java与ASP代码,再到数据库相关脚本。学生可以参考、修改或基于此代码进一步拓展。 - 辅助信息:包括其他与项目相关的技术文档、API手册、使用的第三方库的指导文档等,旨在帮助学生顺利解决技术上的难题。 3. 使用方法:建议学生首先浏览论文,了解系统的背景与设计目标。随后,依照设计文档进行具体的实现工作。当遇到技术问题时,可以查找辅助信息或参考源代码。源代码可以作为实现的起点或验证设计的有效性。 4. 注意事项:使用资源时,学生需确保遵守学校和课程的规定,防止直接复制粘贴,鼓励真正理解和原创。在借鉴源代码时,重要的是确保学生理解代码的逻辑和工作原理,而不仅仅是简单地复制。 希望这种资源描述能为您提供所需的信息。如有其他问题或需要更多的描述,告诉我。
BMP magic是一个新型的加密软件,你可以用它把任何格式的windows文件存入到一幅24位真彩色的BMP图片中,神奇的是这幅内部藏有文件的图片的尺寸、大小不变! 在接下来的文字中您会了解到关于这个新版软件的强大功能与安全算法:在5.0B版本中:★支持jpg格式! 在本版本中,新加入了对jpg格式的自动转换——如果您打开的是一幅jpg图片,程序会自动转换为bmp格式来处理,不用事先再用其它工具转换。★可以隐藏比图片自身大若干倍的文件! 您要相信自己的眼睛:一幅200K的24位BMP,利用本程序成功地将一个1474.56K=1.44兆的WPS文件隐藏于其中!而且这还不是软件创的最高记录。★通过一系列优化算法,使隐藏文件的图片画质得到最大程序的提升! 一幅图片在最大限度上隐藏外部文件后,画质依然清晰,色彩过渡仍很平滑,基本不存在色块问题。这种算法理论上还未达到极限,后续版本中还将继续改进算法使画质进一步提升。★引领数据压缩领域新潮流! 目前最先进的压缩工具对文本文件的压缩率也不过90%,然而利用本软件将图片隐藏文件后再压缩,却有望突破这一“极限”压缩率!基于此种组合压缩法,阁下的160G海量硬盘是否可以多出几十G呢?★独创的255位动态密钥加密术让数据隐藏的更安全! 传统加密法采用常量作加密密钥不少解密高手正是利用这一普遍规律分析加密算法从而成功将所谓的“安全数据”解密。本软件自这一版本起采用最前沿的“动态密钥加密算法”使被加密的数据安全性能有了一个“质”的飞跃!也就是说,即使您用同一幅图片隐藏同一个文件,每次生成的新图片内部数据绝对是不一样的!★采用多种加密方式加密数据,无须担心数据传递过程的“中介者”! 新版软件中采用六种方式加密数据: 1.日期时间锁定; 2.外部软件锁定; 3.程序版本识别; 4.机器硬件锁定; 5.操作系统识别; 6.解密口令锁定。 这六种方式可以任意组合,现分别说明如下: A.采用“日期时间”限制时,您可以输入自1985-2099年间的任何时间(精确到秒),这样数据被加密后,解密者如不是在设定的时间企图解密将得不到正确的隐藏文件; B.采用外部软件锁定时,你可以选择你机器上有的任何一个文件做为锁定用程序,对方在解密时,必要性要用同样的文件来做为密匙才能解开里面的密文(你用的是什么文件,在“图文信息”中是查看不到的!)。 C.程序版本识别,也就是说,你用某一个版本的BMP magic加密了文件后,用其它版本的BMP magic是无法解开里面的密文的,换句话说,就是我们开发的程序,没有设置“向下兼容”; D.机器硬件锁定,你可以用你机器上的任何一个驱动器作为锁定密匙,包括硬盘逻辑分区,光盘,软盘,这样,除了在你的硬件环境中,别人将无法得到正确的加密文件; E.操作员识别,你选用“操作系统识别”后,就只能在相同的操作系统下解开密文,并且,在“图文信息”中不会标识出系统类型; F.采用“用户口令”限制时,您可以输入最长255位的密码(可以是您有办法输入其中的任何字符,当然有中文啦...)。★在图片中的任何添加数据(包括添加的文件头部信息)均用不同密钥加密,如不利用本软件根本提取不到任何有用的信息!这使数据的安全保密性得以极端的提高!★图片中可以像电子邮件一样附加“发送人”、“接收人”、“主题”及留言信息,使加密后的图片交互性更强,十二分的人性化设计!...... 共享软件时代,加密软件数不胜数,相信阁下在看到上面的文字后会在选择加密软件方面有一个成熟的理念,同时我们也相信,这个最新版的软件会带给您生活与工作上的方便与惊喜!********************************************************* 在您使用本软件之前,希望事先能与阁下达成下面的协议: 1.本软件纯属利用娱乐创意编写,参与软件编写的所有人员均不会对您由于使用本软件所造成的一切后果与损失负责! 2.本软件加密技术相当先进,属于“一次性加密”,故软件作者不会接受任何人员提出的“数据抢救”询求,阁下自我保重! 3.本软件的所有流行版本严禁任何组织或个人对其进行反编及商业炒作或以作者名义营利,但欢迎在不影响版权时传播与发布! 如果用户使用本软件,就表示默认上述许可,否则销毁本软件! ********************************************************* 经测试,本软件在Window9x/Me/NT/2000/XP运行稳定并无不安全因素敬放心使用并烦劳扩充测试,谢谢! 感谢众多朋友帮忙测试软件!

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧