读书人

怎么用C/C++来解决过桥有关问题

发布时间: 2012-02-17 17:50:42 作者: rapoo

如何用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语言实例解析(第二版)中的商人过河的问题求解,有附带源代码的

读书人网 >C++

热点推荐