Logo
Section 1 / 4

解决问题:瓶子填充示例

学习通过一个真实世界中的例子来解决问题。

导入

解决问题:瓶子填充示例

学习通过一个真实世界中的例子来解决问题。

一口一口吃掉大象

即使最漫长的旅程,也需要一步一步地走。我们编写复杂的代码来解决各种计算问题。这些问题现在可能看起来令人望而生畏,但只要一步步来,就能解决。要解决一个复杂的文字题,可以先用简单的英语写出步骤。

测量问题

我们从一个简单的问题开始——借助两个容量为奇数的容器来测量水。

我们只有两个瓶子:一个容量为3升的瓶子和一个容量为5升的瓶子。

任务

我们需要完成以下任务:

  1. 测出2升水。
  2. 测出1升水。
  3. 测出4升水。

规则

  • 水源充足,可随意取用。
  • 可以将任意瓶子装满、倒空,或把一个瓶子的水倒入另一个瓶子,次数不限。

注意:不能只装半瓶水,也没有1升、2升或4升的瓶子。

任务1:测出2升水

第一个任务是测出2升水。

提示:先从3升瓶开始装满。

Coming soon to support pageflux-note

解答:

  1. 将3升瓶装满水。
  2. 从3升瓶向5升瓶倒水,直到5升瓶装满。

此时,3升瓶中剩余的水量正好是2升。

解答:

  1. 将3升瓶装满水。
  2. 从3升瓶向5升瓶倒水,直到5升瓶装满。

此时,3升瓶中剩余的水量正好是2升。

任务2:测出1升水

下一个任务是测出1升水。

提示:先从3升瓶开始装满。

Coming soon to support pageflux-note

解答:

  1. 将3升瓶装满水。
  2. 将3升瓶中的所有水倒入5升瓶。
  3. 再次将3升瓶装满水。
  4. 从3升瓶向5升瓶倒水,直到5升瓶装满。

此时,3升瓶中剩余的水量正好是1升。

解答:

  1. 将3升瓶装满水。
  2. 将3升瓶中的所有水倒入5升瓶。
  3. 再次将3升瓶装满水。
  4. 从3升瓶向5升瓶倒水,直到5升瓶装满。

此时,3升瓶中剩余的水量正好是1升。

任务3:测出4升水

下一个任务是测出4升水。

提示:先从3升瓶开始装满。

Coming soon to support pageflux-note

解答:

  1. 将3升瓶装满水。
  2. 将3升瓶中的3升水倒入空的5升瓶。
  3. 再次将3升瓶装满水。
  4. 从3升瓶向5升瓶倒2升水,使5升瓶装满。此时3升瓶中剩余1升水。
  5. 将5升瓶中的水全部倒掉。
  6. 将3升瓶中剩余的1升水倒入5升瓶。
  7. 第三次将3升瓶装满水。
  8. 将3升瓶中的所有水倒入5升瓶。

此时,5升瓶中剩余的水量正好是4升。

解答

  1. 将3升瓶装满水。
  2. 将3升瓶中的3升水倒入空的5升瓶。
  3. 再次将3升瓶装满水。
  4. 从3升瓶向5升瓶倒2升水,使5升瓶装满。此时3升瓶中剩余1升水。
  5. 将5升瓶中的水全部倒掉。
  6. 将3升瓶中剩余的1升水倒入5升瓶。
  7. 第三次将3升瓶装满水。
  8. 将3升瓶中的所有水倒入5升瓶。

此时,5升瓶中剩余的水量正好是4升。

程序

程序是一组有限的步骤或操作,用于达成某个目标。上述所有解决方案本质上都是程序,它们各自解决了对应的问题。每个程序都是一系列指令,用来解决特定问题。

变量

变量是在问题或解决方案上下文中可能发生变化的量。在上面的例子中,瓶子就是变量。

下面的演示有助于我们理解上述解法的工作原理。

...
1 / 9

步骤1:将3升瓶装满水。

用另一种方法解决同一问题

一个问题可能有多种解法。例如,这个问题也可以通过先装满5升瓶来解决。

在下面的交互组件中,正确的步骤被打乱顺序排列。请拖动这些步骤,按正确顺序重新排列。

课程简介

简单程序与执行表