读书人

一道算法题解决思路

发布时间: 2013-11-11 14:02:17 作者: rapoo

一道算法题
这几天在看《算法分析与设计》 在第一章习题上看到一个挺有意思的问题,百思不得其解,现在拿来和大家分享一下。
1.先来一个简单的热下身。 农夫带着一只羊, 一只狼,一颗白菜过河,每次只能带一样东西过河,农夫不在的话狼会吃羊,羊会吃菜,问如何安排过河。

2.这个才是真正打难题。 A B C D 4个人过桥,每次只能2人过,单独过桥的话A要1分钟,B要2分钟,C要5分钟,D要10分钟,走得慢的会拖累走得快的(即A和B一起的话要花2分钟过桥)。问如何安排过桥方案让4个人能在17分钟之内全部过桥。

第二问真是不会做,求教高人。
[解决办法]

引用:
Quote: 引用:

警察与犯人过河,警察回来
警察与儿子1过河,警察与犯人回来
爸爸与儿子2过河,爸爸回来
爸爸与妈妈过河,妈妈回来
警察与犯人过河,爸爸回来
爸爸与妈妈过河,妈妈回来
妈妈与女儿1过河,警察与犯人回来
警察与女儿2过河,警察回来
警察与犯人过河

都可以用回溯法。


厉害,我还以为这只是一个智力题。步骤太多了想不清楚。等下好好看看回溯法。

你可以把它看成一个编程题。比如儿女有3对怎么办?4对怎么办?警察多一个怎么样?诸如此类。
[解决办法]
常规做法,第一步,以一端为参考,生成状态图。
第二步,求图的最短路径。这里图的起点和终点是可以确定的。

如ABCD的问题:
起始节点:ABCD
第一层分支:ABC,ABD,ACD,BCD,AB,CD,AC,BD...
第二层分支:略(有点多)
...
终止节点:(空)

然后求起止点的最优解(最短路径)。

引用:
Quote: 引用:

Quote: 引用:

警察与犯人过河,警察回来
警察与儿子1过河,警察与犯人回来
爸爸与儿子2过河,爸爸回来
爸爸与妈妈过河,妈妈回来
警察与犯人过河,爸爸回来
爸爸与妈妈过河,妈妈回来
妈妈与女儿1过河,警察与犯人回来
警察与女儿2过河,警察回来
警察与犯人过河

都可以用回溯法。


厉害,我还以为这只是一个智力题。步骤太多了想不清楚。等下好好看看回溯法。

你可以把它看成一个编程题。比如儿女有3对怎么办?4对怎么办?警察多一个怎么样?诸如此类。

读书人网 >C++

热点推荐