Question:
农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,当然也可以不运东西,如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。(参考:http://blog.csdn.net/orbit/article/details/7563220)
本文只是用面向过程的方法,利用二进制位,得出一种过河方法。
深入提问:1.一共有多少种方案,最耗时和最快方案分别是?
2.如何使用面向对象方法设计,使得算法可以扩展至更复杂的方案?如有多个农夫,多种交通工具,多个地点,多种待运输的物价以及他们之间复杂的利害关系。
3.本问题与动态规划算法(如
背包模型)的联系是?
Result:
0 :农夫:北,蔬菜:北,山羊:北,狼:北
安全
10 :农夫:南,蔬菜:北,山羊:南,狼:北
安全
2 :农夫:北,蔬菜:北,山羊:南,狼:北
安全
14 :农夫:南,蔬菜:南,山羊:南,狼:北
安全
4 :农夫:北,蔬菜:南,山羊:北,狼:北
安全
13 :农夫:南,蔬菜:南,山羊:北,狼:南
安全
5 :农夫:北,蔬菜:南ÿ