记录一个很平常的想法.

记的在CSDN上看到这个贴子上的一个内容.http://topic.csdn.net/u/20090827/15/f4bed877-949b-4fc7-9224-6eaa518b3393.html

上面还有考察是不是变态的题目,我晕,扯远了,就第二题,2  明和小华买了10斤蜂蜜,装在一个大瓶子里.要把蜂蜜平分,只有两个空瓶子,一个正好装7斤,另一个正好装3斤. 怎样才能用最简单的方法把蜂蜜分出来.(上面的最简单对于电脑有点难了,只是考虑分出来,大家这个其实也是可以考虑的)
      这种题目好像现在很流行,变体不少,比如,一个桶7,一个桶什么的,反正差不多吧.本来没什么,只是想看能不能用程序来完成,就用电脑来完成一下人脑基本想法,本身还是比较傻.最主要是我学习不久,什么东东都没有深入,就怕自己的代码方式,风格,思想有什么问题.希望有老手能指点我们这些小白.谢谢.
      首先定义一个瓶吧,上面本来是有三个瓶,大的,小的,中的,本想是一个接口,后来还是没搞那么麻烦,只是演示,就定义一个瓶的类(Bottle),有四个属性,分别是实体名(Name),容量(Capacity),占用容量(Occupy),没占用的容量(OnOccupy). 二个字段,容量(capactity),占用容量(occupy). 一个方法倒出(Poured).一个静态方法(RandomPoured).
      思路如下.把蜂蜜分出来,大至是通过不断的把瓶子里的东东倒出.这个有二种情况.
      1.如7升的满的倒给10升的空瓶.这样属于
       倒出的占用容量比倒进的瓶的没占用的容量小.那么倒出的会占用容量变成0.倒进的加上倒出的占用容量.
       那么结果就是7的空,10升的有了7升.
      2.如7升瓶满的倒给10升瓶已经有7长虹的.这样属于
        倒出的占用容量比倒进的瓶的没占用的容量大.那么倒进的会变满,而倒出的会减少倒进的瓶的原没占用容量.
        那么结果就是10升的满,7升的还有4升.

然后电脑就是不断组合(这是我的问题.深入的话详细让他合理对比倒出可能花费时间很多), 考虑结果就是有一个瓶有5升的OK了(本身最终是要二个瓶要5 升).
            上面的静态方法就是给出二个生成的随机数(我感觉这步很不好,可惜我找不到解决方法).根据随机数分别生成一个倒出的,一个倒进的.如下代码所示.   

Code

以上就是瓶子的行为了.下一步定义操作者,就是一个Main(鄙视我吧).

Code


Code

这里他就会乱倒进倒出了,至到结果.中间我想得到他的有效比较步骤(就是那些被//的代码)不过实验不成立.看下结果吧

      可以看到,最后5步有点价值,可供参考.上面可以当做是一个人乱想的次数.
      最后感想.电脑能做的全是靠人,我让他乱比较.他就乱比较.如果我把比较的思路给他清晰详细的.那他也会给你清晰的思考.
      PS:本人水平有限(小学生可能还不如).希望能得到各位大牛的各方面指导性建议.再次谢谢.

posted @ 2009-08-31 11:57  天天不在  阅读(480)  评论(0编辑  收藏  举报