一道公司的面试题

smalldoudou 2002-06-27 12:01:05
3对夫妻渡河,若小船至多只能容纳2人,且任一女子不得在其丈夫不在的情况下与别的男子在一起,问如何安排渡河方案?(给出算法或源程序)。
...全文
72 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
jack4liang 2002-07-04
  • 打赏
  • 举报
回复
多男不要紧,只要那个女人有男人保护就可以了,或者都是男人无所谓阿,

我写了一个程序,有没有人要看,我跑不出答案,如果允许回来2个人的情况和加上一个人去的情况,程序可能死循环,我分析了结果,很多过程可以智能的排除掉的,所以我再看AI,觉得自己真的恨菜了。
gydgs 2002-07-04
  • 打赏
  • 举报
回复
上下岸的某一时刻,一定存在多女和少男的情况,这能不能算?
gydgs 2002-07-04
  • 打赏
  • 举报
回复
想来想去,这个问题根本就不能解决,11步所谓的正确答案,在第9步的时候仍然出现了3女2男的情况。
jack4liang 2002-07-04
  • 打赏
  • 举报
回复
dxr7712是错的。这个序列是不安全的,用我的程序检查bw会有危险拉,你再看看?
gydgs 2002-07-04
  • 打赏
  • 举报
回复
题目有说不能两个男的坐船吗?这也叫题目。
只要三个女的在自己丈夫的陪同下过去了,三个大男人爱怎么过怎么过呗。
jack4liang 2002-07-04
  • 打赏
  • 举报
回复
11 步是可以搞定,但是9步可以吗?我编的程序就是解不出9步可以走出来的方案。
tinyghost 2002-07-02
  • 打赏
  • 举报
回复
dxr7712的说法很正确,我这么认为
elevenj 2002-07-02
  • 打赏
  • 举报
回复
smalldoudou (孙太阳)
3对夫妻渡河,若小船至多只能容纳2人,且任一女子不得在其丈夫不在的情况下与别的男子在一起,问如何安排渡河方案?(给出算法或源程序)。
是原题吗?
jack4liang 2002-07-02
  • 打赏
  • 举报
回复
大家给我一个结论吧,我什么99年电脑包也没有看过,9步到底能不能实现?
ycwang 2002-07-01
  • 打赏
  • 举报
回复
大家不用讲了,只有 wangsg(神龙摆尾)的方法是对的,其他人的方法都有问题。现在看谁能用代码实现了。
llyhappy 2002-07-01
  • 打赏
  • 举报
回复
Am,Aw
Bm,Bw
Cm,Cw

1.go Am Aw
2.back Am
3.go Bm Am
4.back Bm
5.go Bm Bw
6.back Bm
7.go Cm Bm
8.back Cm
9.go Cm Cw
jack4liang 2002-07-01
  • 打赏
  • 举报
回复
masterdog(掌门狗):
你的代码我看了,我觉得你给出的答案是错的,你在检查检查。

我的算法是这样的,不是自递归,而是循环递归

go()
{
...
...

case 1:
if(满足case1的条件)
back();
case 2:
if(满足case2的条件)
back();
case 3

.
.
.
}

back()
{
......
case 1:
if(满足case1的条件)
go()//if succ
.
.
.
}

而且我使用了8个过河的case(夫妇,同男,同女),和6个回来的case(任何一个人),当然如果哪个人不符合条件就换下一个case,这样可以跑出所有的结果出来,可惜我失败了,也许是我的程序写的有问题,和你交流一下。
dxr7712 2002-07-01
  • 打赏
  • 举报
回复
Am,Aw
Bm,Bw
Cm,Cw

1.go Am Aw
2.back Am
3.go Bm Am
4.back Bm
5.go Bm Bw
6.back Am Bm
7.go Cm Cw
8.back Cm
9.go Cm Am
10.back Bw
11.go Bm Bw
这样可以保证任一女子不得在其丈夫不在的情况下与别的男子在一起
fengye 2002-07-01
  • 打赏
  • 举报
回复
把所有夫、妇、船在两岸的允许组合列举出来,作为节点. 两个节点之间可以通过一次摆渡迁移的用有向边连接,于是问题归结为在一个有向图(有环)中寻找从一个节点(起始状态)到另一个节点(终止状态)的路径。
alpsice 2002-07-01
  • 打赏
  • 举报
回复
99年的《电脑商情报》不知是上,还是下册,有一个,三对老虎过河的程序是用C写的。题意是一样的。
masterdog 2002-07-01
  • 打赏
  • 举报
回复
jack4liang(菜):
我的答案错在哪里?我检查了3对和4对的情况,没发现什么问题。其实当初就不该讨论这个问题的,因为很可能是发散(无解)的,不过这道题碰巧有解罢了。另外这么多人都给出了计算结果(心算,呵呵),看来喜欢动脑子的人很多哟,不过既然是讨论算法,光给出最后结果还是不够的。建议不要再纠缠这个问题了吧!没有多少优化的余地。所以严格的说就不是什么算法了。菜同志,其实你的设计和我的没有什么不同,可能是细节某个地方出了问题。
masterdog 2002-06-28
  • 打赏
  • 举报
回复
其实这个问题的确不适合用代码实现,真的很笨,不过我的代码的确实现了有解的答案。并且可以输入不同数目的夫妇。
jack4liang 2002-06-28
  • 打赏
  • 举报
回复
我编了一个程序搜索了所有的路径,结果无解。

看来去2个人,回来一个人,这样的最快方法无解。

wangsg(神龙摆尾) 的解法是对的。
zhukejun 2002-06-27
  • 打赏
  • 举报
回复
问太多遍了都!
haidaya 2002-06-27
  • 打赏
  • 举报
回复
没有必要那么烦呀,,用数组了,用w1,w2,w3分别表示三个妻子,h1,h2,h3表示对应的丈夫,那就只能是这些组合了,至于源代码,我想一下先
加载更多回复(31)

70,031

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧