火柴搬家

来自计算思维百科
跳转至: 导航搜索
火柴搬家1.jpg

有三堆火柴共48根,现从第一堆里拿出与第二堆根数相同的火柴并入第二堆里;再从第二堆里拿出与第三堆根数相同的火柴并入第三堆;最后再从第三堆里拿出与这时第一堆根数相同的火柴并入第一堆里。经过这样的变动后,3堆火柴的根数恰好完全相同。问原来每堆火柴各有几根?

解决方案

方案1---直接法

解决方法:设第一堆有X根火柴,第二堆有Y根,第三堆有Z根;

火柴搬家2.png

根据题目得到三条公式:2*x+2*y=16;2*y-z=16;2*z-x+y=16;

根据这三条公式解得x=22,y=14,z=12;

方案2—逆向思维法

解决方法:我们知道结果每堆火柴数目为16;

  1. 最后再从第三堆里拿出与这时第一堆根数相同的火柴并入第一堆里。说明原来第一堆有8根,第三堆有24根;
  2. 再从第二堆里拿出与第三堆根数相同的火柴并入第三堆;说明第三堆原来有12根,第二堆原来有28根;
  3. 现从第一堆里拿出与第二堆根数相同的火柴并入第二堆里;说明第二堆原来有14根,第一堆有22根。

涉及的计算思维

解决这个问题有两种解法,一种是直接法,设3个变量表示三堆火柴的起始数,然后进行求解,这种方法体现了计算思维的抽象特点。一种是间接法,从结果倒推上一步操作的结果,这种解法类似于数据库的日志,把对三堆火柴做的操作都记录在日志上,当出现问题时(开始的三堆火柴数目各自为多少?),可以对火柴搬家事务进行回滚,它体现的是一种计算思维的纠错容错特点。