荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Version (Who makes history and why), 信区: Program
标  题:  一道算法题解法(1) (转载)
发信站: 荔园晨风BBS站 (Mon Mar 24 18:02:17 2003), 站内信件

用一个好一点的数据结构可以加快搜索效率。

这里可以定义一个以数值1为节点的三叉树。

                     ①
         ┌─────┼─────┐
         ②          ③          ⑤
     ┌─┼─┐  ┌─┼─┐  ┌─┼─┐
     ④  ⑥  ⑩  ⑥  ⑨  ⒂  ⑩  ⒂ (25)

用一个队列nodeQueue以升序存放该三叉树的所有孩子个数小于3的节点。
数的搜索过程就是该三叉树的生长过程。

树的生长规则是:

在链表中选择最小的三个节点分别乘上可能选择的最小数(2、3、5中的一个,需排除重
复使用因子的情况)做出比较,生成所得值最小且该节点的值大于上一个生成节点的值
的节点,对该节点孩子的成长情况做出标记。把新生成的结点放入队尾。
计数index++

在链表中选择最小的三个节点分别乘上可能选择的最小数(2、3、5中的一个,需排除重
复使用因子的情况)做出比较,生成所得值最小且该节点的值大于上一个生成节点的值
的节点,对该节点孩子的成长情况做出标记。把新生成的结点放入队尾。
计数index++


如果该节点的三个孩子都已生成完毕,把该节点出队(因为该节点必为队列中最小的点
)。


--
                      *
          *                                  *
                          *             *
                      no more to say
                  ★     just wish you   ★
                            good luck

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.50]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店