Chinaunix首页 | 论坛 | 博客
  • 博客访问: 76066
  • 博文数量: 7
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-15 22:11
文章存档

2009年(2)

2008年(4)

2007年(1)

我的朋友

分类: C/C++

2008-03-22 19:56:16

这是一道CUer的面试题,比较有意思,有兴趣的话,挑战一下哦.
Let's GO -->
    袋子中有3个红球,2个白球,1个绿球,从中任取两个不同颜色的球可变成两个另一种颜色的球,如取一个红球和一个白球,则会变为两个绿球。问最少通过多少次取球可使袋子中球全部变成同一颜色。

(分析见下)

袋子中球全部变成同一颜色是不可能的.可以采用逆向思维来证明。
要证明6个球都变成同一种颜色, 也就是要推出 0 0 6 的组合
要推出 0 0 6 的组合,必须有两种球的个数相等,对于6个球只可能有三种组合:
两种颜色的球个数为1 即: 1 1 4 组合
两种颜色的球个数为2 即: 2 2 2 组合
两种颜色的球个数为3 即: 3 3 0 组合
如果能推出上面三种中的任何一种,就可能出现同颜色,否则不可能。

我们的组合数是 1 2 3 ,现在我们开始组合 -->
首先,有三种可能的组合:1和2,1和3,2和3
情况一(1和2)
1 2 3 (1和2)
0 1 5 (只能1和5组合)
2 0 4 (只能2和4组合)
1 2 3 回到首先

情况二(1和3)
1 2 3 (1和3)
0 4 2 (只能4和2组合)
2 3 1 回到首先

情况三(2和3)
1 2 3 (2和3)
3 1 2 回到首先,

综上,三种情况都回到首先,并且找不到个数相等的组合,构成死循环。
所以,袋子中球全部变成同一颜色是不可能的。

阅读(2320) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

ucfree2008-03-26 17:36:39

^_^ 可以考虑把它吃掉

chinaunix网友2008-03-26 16:37:10

取两次 1 取绿,白各一个, 丢掉 2 取红,白各一个,丢掉 袋中的球都变成红色了. 因为别的都被丢了.

chinaunix网友2008-03-26 11:51:46

在红白绿三种色球中,由于各类色球的数量都不相同,所以,每次拿两个不同颜色的球变成另一种颜色,,意味着 袋中的三色球会首先变成两色球!而不能直接由3色球变成单色球。 两色球要变成一色球,那么只有一种可能,那就是这两种颜色的球的数量必须一样。 所以,我们只需要证明袋中的3色球能变成两色球且数量一样 也就是说 我们要证明色球组合 3,2,1,能变成0,3,3的色球组合 (遗憾的是,三色球变成两色球,只能是0,2,4的色球组合或者0,1,5的色球组合。) 证明如下: 在3,2,1中,取3,2各一球,变成2,1,3。组合未变 在3,2,1中,取3,1各一球,变成2,4,0, 再取一次 又变成了1,3,2 在3,2,1中,取2,1各一球,变成5,1,0 再取一次 又变成了0,2,4 所以,无法实现。

chinaunix网友2008-03-23 23:11:02

胡说呢