开元周游
德国频道
楼主: 三岛由纪夫
打印 上一主题 下一主题

[软件] 类华容道问题,谁会编程解决?(小学计算机奥赛题)

[复制链接]
11#
发表于 1.10.2009 13:48:31 | 只看该作者
回复 支持 反对

使用道具 举报

12#
发表于 2.10.2009 13:55:30 | 只看该作者
尝试一下。
先定义一个简单的结构描述3X3的状态。
比如435612_78可以用来表示
435
612
_78

再写一个移动的可能性产生器
比如从435612_78有两种可能,4356127_8和43561_278

还需要一个评分器,也就是说,当前的状态离目的地还有多远。
比如可以定义
435
612
_78
中的4距目的的距离是1,3距目的的距离是1,5距目的的距离是2,6距目的的距离是2,1距目的的距离是2,7距目的的距离是1,8距目的的距离是1。
那么总和是10。
具体的定义可以更细分。

最后需要一个有序链,每个节点有四部分组成,结构,节点是否试过,距目标的距离,父节点。

程序开始用随机数先初始化结构。
对其进行评分。
加入到有序链。

下面是一个循环

1。从有序链里选离目标最近而且还没有尝试过的节点
2。是否是目标,如是跳出循环,打印。
3。该节点在有序链中标记为尝试过。
4。计算移动可能性。
5。对每种移动可能性检查是否已在有序链中
6。对没在有序链中的移动可能性进行评分
7。将此移动可能性及其评分和父节点加入有序链
8。重复1

打印部分就不写了,就是按照父节点往回找。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点信息

站点统计| 举报| Archiver| 手机版| 小黑屋

Powered by Discuz! X3.2 © 2001-2014 Comsenz Inc.

GMT+1, 26.12.2024 00:35

关于我们|Apps

() 开元网

快速回复 返回顶部 返回列表