求大佬帮忙看一道c语言c语言初学者编程题目

游戏规则:一家6口(爸爸、妈妈、两个女儿、两个儿子)及警察和小偷要从河这边

渡到河对岸在河这边仅有一艘小舢板可以把他们载到对岸。可是只有爸爸、妈妈和警

察能够驾船,不论成人与小孩每程只能承载二人。在渡河过程中你要避免以下三种情

(1)当警察与小偷分开时,小偷会伤害一家6口;

(2)当爸爸看见妈妈离开时爸爸便会教训女儿;

(3)当妈妈看见爸爸离开时,妈妈便会教训儿子

要求学生给出一组过河的可行解

一囲八个人,每个人都有两个状态(左岸和右岸)我们把八个人在左岸的状态记为

这个状态我们其实可以开辟一个8个元素的数组。另外还需要设置一个变量代表船的

状态因为还要打印结果,所以在搜索的过程中还需要一个结构体数组存储每次渡河的人

是谁(可能是一个人也可能是2个人),当然也可以建立2个一维数组代替结构体数组。

接下来可以选择深度优先搜索或者宽度优先搜索来进行搜索每个状態的限制条件根

最后遍历存储渡河人员的数组,并打印出结果

其实每个人的状态(包括船的状态都是0或者1),所以其实用一个int型就可以叻

状态转移全部使用位运算。

使用2的整数次幂表示不同人所以使用一个整数表示当前的局面,255为初始0

将数组存储状态,变换为用一個字节来表示各个人的状态然后采用位运算方式进行


我要回帖

更多关于 c语言初学者编程题目 的文章

 

随机推荐