当前位置:  技术问答>java相关

传教士和野人的问题,有兴趣的人试试,给高分

    来源: 互联网  发布时间:2015-11-19

    本文导语:  声明:这个问题我贴过,还是没解决,很费时间的,有兴趣的人可以试试,高分赠送。 问题描述:有3个野人和3个传教士渡河,现在有一艘小船,最多能容两人,无论是在左岸还是右岸, 如果野人的数目超过传教士...

声明:这个问题我贴过,还是没解决,很费时间的,有兴趣的人可以试试,高分赠送。
问题描述:有3个野人和3个传教士渡河,现在有一艘小船,最多能容两人,无论是在左岸还是右岸,
如果野人的数目超过传教士的数目,野人就会吃掉传教士。问怎样才能安全渡河。(理论上,野人和
传教士的数目是不限的)
提示:
(一)宽度优先算法:
(1)把起始节点放到open表中(如果该起始节点是目标节点,则求的一个解答)
(2)如果open是个空表,则没有解,失败退出;否则继续。
(3)把第一个节点(节点n)从open表移出,并把他放入close的扩展节点表中。
(4)扩展节点n。如果没有后继节点,则转向第(2)步。
(5)把n的所有后继节点放到open表的末端,并提供从这些后继节点回到n的指针。
(6)如果n的任一个后继节点是目标节点,则找到一个解答,成功退出;否则转向第(2)步。
(二)深度优先算法:
(1)把起始节点放到未扩展节点open表中。如果此节点为一目标节点,则得到一个解。
(2)如果open表为一空表,则失败退出。
(3)把第一个节点(节点n)从open表移到close表。
(4)如果节点n的深度等于最大深度,则转向(2)。
(5)扩展节点n,产生其全部后裔,并把他们放入open表的前头。如果没有后裔,则转向(2)。
(6)如果后继节点中有任一个为目标节点,则求的一个解,成功退出;否则,转向(2)。
我的看法:
宽度优先的话,open表是队列,close表是栈。
深度优先的话,open和close都是栈。
我写了一个,实在太差了,不敢拿出来,另一方面,会限制大家的思维,所以不贴代码了。
期待大家用java解决这个问题。

|
俺大学里用prolog写过
既然用c写出来了,翻译成java不是很easy

|
等待回答!!!关注!!!

|
作过游戏没作过最优算法,关注一下

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3