140克盐,分3次如何分成50克、90克?

        学编程怎么能不接触算法呢?

        这是我在最近看到的一个题目,题目很简单,但是于我个人而言思维上有一个突破——有条件,要上;没有条件,创造条件也要上。话不多说,先看看题目。

        有一个天平,7克、2克砝码各一个,如何只用这些物品三次将140克盐分成50克,90克各一份?

        看到这里,我首先想到的是借助天平来分盐。第一次:分成两个70克。第二次:将70克盐再进行等分,分出两个35克。现在有70克,35克,35克。第三次:将35克盐再进行等分,分出两个17.5克。现在的盐有70克,35克,17.5克,17.5克四堆盐,这四堆盐组合不出50克盐,也组合不出来90克盐,所以这种方法不可行。

         接下来,借助砝码来分盐。天平的一端完全是盐,另一端只有砝码,可能出现的情况有:2克、7克、9克。按最大的砝码重量来操作,操作三次最多可以得到9✖3=27克盐,达不到要求。

         接下来就是我思维的突破点了,砝码的价值在于它所能衡量出来天平另一端物品的重量,不仅仅在于其本身,划重点“重量”、“重量”、“重量”。砝码可以代表重量,那么其他可以用作重量的物品也可以充当砝码的作用,比如本题中出现的盐,比如“曹冲称象”,船就是天平,石头就是砝码。7克、2克的砝码各有1个,为了能凑出50克盐,接下来就需要知道需要多少个7克、多少个2克了。用到了二元一次方程:

         设x个2克,y个7克,即2x+7y=50.列出整数解:

  

xy
182
114
46

         因为只能称3次,前两组解是无法组合出这么多次,所以只选取最后以一组解,4个2克、6个7克。

         天平每操作一次,便可将重量增加一倍,分开的砝码、次数不够,所以砝码不能分开使用,需要将其进行合并。

        2✖4+7✖6  =(2✖2+7✖3)✖2  =  [(2+7)+(2+7) + 7 ] ✖ 2  

 方法一:

         第一次:2克+7克=9克 的砝码放在天平的一端,称出9克盐。(用到了第一个9克)

         第二次:7克砝码+9克盐放在天平的一端,称出来16克盐。(用到了第二个9克,用到了7克)

                       现在有25克盐。

         第三次:不用砝码。将已有的25克盐放置在天平的一端,在天平的另一端称出25克盐,又得  到了25克盐。(这次用到的是,天平的翻倍效果)

         总共得到了50克盐,这样剩余的盐就是90克盐了。

方法二:

        第一次:用7克+2克=9克,的砝码在天平一端称出9克的盐。(用到了第一个9克)

        第二次:用7克+2克=9克,再加9克盐,在天平的另一端称出18克盐。(用到了第二个9克)

                      这时,已经有了27克盐,但是先不将它们合并。

        第三次:天平的一端是第二次得到的18克盐,加7克的砝码;在天平的另一端先放2克砝码,这样就可以得到23克盐。(这次,一端用到了7克砝码,另一端用到了2克砝码)

       9+18+23=50克盐。

最后,用专业术语来讲就是搜索的过程:确定决策条件、划分阶段、状态转移,找到最优解。

          有条件要上,没有条件、创造条件也要上。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值