喝酒算法!!!

meng_tenboy 2001-06-05 12:28:00
四个人喝洒,但只有三个形状不规则的酒杯,两个是八两的形状不规则的酒怀,并装满了酒,一个是形状不规则的三两的空的酒怀,问怎么喝才能使四个人每人都喝到四两酒?写出程序或算法!?

...全文
226 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
侠雨飞飞 2001-06-12
  • 打赏
  • 举报
回复
嘻嘻
不好意思
漏了
还有下边三种情况
(1,2,1)
(1,1,2)
(2,1,1)
starfish 2001-06-12
  • 打赏
  • 举报
回复
我已经在另外一篇帖子中详细地说明这个问题了
ruijinren 2001-06-12
  • 打赏
  • 举报
回复
你好,我好像还没理解你出题目的意思,你究竟是想要人脑想出这个问题的结果呢,还是要
设计一个算法让计算机搜索出所有可能的结果呢?
zhangshicun 2001-06-08
  • 打赏
  • 举报
回复
starfish(海星):
我没看懂。 
meng_tenboy 2001-06-08
  • 打赏
  • 举报
回复
meng_tenboy 2001-06-08
  • 打赏
  • 举报
回复
笨笨虫冲,你的想法很好!!谢谢指点
侠雨飞飞 2001-06-08
  • 打赏
  • 举报
回复
另类:
每个人都可能有五种情况
一 (1,1,1,1)分四次喝,每次喝1两
二 (1,3)分两次喝,第一次1两,第二次3两
三 (3,1)分两次喝,第一次3两,第二次1两
四 (2,2)分两次喝,第一次2两,第二次2两
五 (4)分一次喝完,喝4两

而实际上我们知道第一个人只能喝3两
也就出现如下排列组合
A B C D
(3,1) (1,1,1,1) (1,1,1,1) (1,1,1,1)
(3,1) (3,1) (3,1)
(1,3) (1,3) (1,3)
(2,2) (2,2) (2,2)
(4) (4) (4)

用一个函数来判断每次某个人能否喝下x两酒
int drink(int B1,int B2,int B3,int x)
其中B1是酒杯1现有酒量,B2是酒杯2现有酒量,B3是酒杯3现有酒量,x是假设要喝的酒量
成功则返回1,否则返回0
这个函数很容易,已经实现(无外乎几种可能情况的判断)
用它对上面的可能情况进行验证,即可得最终组合
(人为的用这个函数来验证比写出具体代码用机器执行要容易一些,不信试试,嘻嘻)

去也,去也
~~
meng_tenboy 2001-06-07
  • 打赏
  • 举报
回复
海星,我想知道如何用回溯法来实现喝酒算法?能不能给我一些提示呢?
我想用
struct abc{int a;
int b;
int c;
abc* next;
]为结点,树形的搜索法,类似走迷宫。
meng_tenboy 2001-06-05
  • 打赏
  • 举报
回复
我的问题为什么没人回答?大家仅仅关心“程序员薪水”“什么语言最好”这种不花心力,无厘头的问题吗?我郁闷,我郁闷,我郁闷,我郁闷,我郁闷,我郁闷,我郁闷!!!!
不是我的问题太简单了吧???????
starfish 2001-06-05
  • 打赏
  • 举报
回复
这不是已经有了么(不是我的回答) ,看下面

回复人:made_in_(王了) (2001-6-2 17:12:00) 得0分
8 8 0
5 8 3
5 8 0//A喝3两
2 8 3
0 8 3//B喝2两
3 8 0
3 5 3
6 5 0
6 2 3
8 2 1
8 2 0//A喝一两,已经满4两
8 0 2
7 0 3
7 3 0
4 3 3
4 6 0
1 6 3
1 8 1
0 8 1//C喝一两
0 8 0//D喝一两
0 5 3
0 5 0//C喝三两,已经满4两
0 2 3
0 2 0//D喝三两,已经满4两
0 0 0//B喝二两,已经满4两。完毕。
kingsong 2001-06-05
  • 打赏
  • 举报
回复
想想...
meng_tenboy 2001-06-05
  • 打赏
  • 举报
回复
海星,我看过了!!!没有人回答。笨笨虫冲,你可名名副其实!!!不动脑筋。
高手,大虾你们是不是怕了???
激将法。
starfish 2001-06-05
  • 打赏
  • 举报
回复
这个问题有人问过了,你不要郁闷了,到
http://www.csdn.net/expert/topic/143/143768.shtm
看看吧。
侠雨飞飞 2001-06-05
  • 打赏
  • 举报
回复
每个人先喝3两(很容易实现)
这样,问题就转化成

四个人喝洒,但只有三个形状不规则的酒杯,两个是八两的形状不规则的酒怀,其中一个装了4两酒,一个是形状不规则的三两的空的酒怀,问怎么喝才能使四个人每人都喝到1两酒?

这样,把4两酒平分(可以实现,因为有两个酒杯形状是一样的)
将其中的一个杯子中的2两酒放到3两的空杯中
再把另一个2两平分,哈哈,可以举杯痛饮了——只可惜只有一两酒
然后再把另一个2两平分(此时两个8两杯已空)


这样可以吗?
算法我不会写,嘻嘻
酒我可喝了
~~

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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