如何用C/C++来解决过桥问题
有这么一道智力测试题,可以在这里玩到:http://www.4399.com/flash/252_1.htm,叙述如下
一家六口人外出旅行,分别是妈妈、爸爸、两个女儿、两个儿子,不慎迷失野外。而且在野外遇到一个逃犯,但被一名巡逻的警察逮捕。现在,需要通过一条河流才能到达安全的地点,但是渡口只有一条船,只能载两人。只有爸爸、妈妈、警察才能控制小船,而且:
1、警察与犯人分开时,犯人会伤害一家六口。
2、爸爸看见妈妈离开女儿时,爸爸便会教训女儿。
3、妈妈看见爸爸离开儿子时,妈妈便会教训儿子。
目标是让一家六口人安全到达对岸。
-------------------------------------------------------
经过简化后,我的叙述如下:
八人最终需要都达到河对岸,需要满足条件:
1.属性
人物 属性
妈妈 成人,母亲
爸爸 成人,父亲
儿子1 儿童,儿子
儿子2 儿童,儿子
女儿1 儿童,女儿
女儿2 儿童,女儿
警察 成人,警察
罪犯 嫌疑犯
2.限制
注:“存在”:在同一个河岸上
每次最多两人同时过河;
过河时必须有成人;
如果母亲存在,父亲不能离开儿子;
如果父亲存在,母亲不能离开女儿;
嫌疑犯不能和非警察过河。
-----------------------------------------
经过搜索,发现了一个C语言的解决方案:
(见1楼)
但是显然,这位开发者对
(4) 当母亲不在女儿身边时,父亲会责骂女儿。
(5) 当父亲不在儿子身边时,母亲也会责骂儿子。
理解有误。因此继续搜寻,找到这个帖子http://topic.csdn.net/t/20050612/23/4077404.html,在帖子的恢回复中,有一位开发者贴出了一段很长的C++代码,但是由于他是在VC++中编译的,因此肯定通不过我的gcc-g++,于是对代码进行修改,改完的代码是这样:
(见2、3楼)
但是,这个程序的输出混乱,难以理解,求一个完美的解决方案!
[解决办法]
http://topic.csdn.net/u/20101103/15/990a6fe6-8ac5-4836-a93e-374ea3e5789d.html
参考这个帖子 一模一样的算法和需求
[解决办法]
觉得像是c语言实例解析(第二版)中的商人过河的问题求解,有附带源代码的