Logo
Section 1 / 4

问题解决:瓶子填充示例

学习通过一个实际例子来解决问题。

导入

问题解决:瓶子填充示例

学习通过一个实际例子来解决问题。

一口一口吃掉大象

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

测量问题

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

我们只有两个瓶子:一个 3 升瓶和一个 5 升瓶。

任务

我们需要完成以下任务:

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

规则

  • 我们有充足的水源。
  • 可以随时将任意瓶子装满、倒空,或把一个瓶子的水倒入另一个瓶子。

注意:我们不能将瓶子装到一半,且没有 1 升、2 升或 4 升的瓶子。

任务 1:测量 2 升水

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

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

Coming soon to support pageflux-note

解法:

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

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

解法:

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

此时,5 升瓶中剩余的水量正好是 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 升瓶来解决。

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

排列可视化

课程简介

简单程序与执行表