“贪心算法”看过来

漫步

<p class="ql-block">  早读课讲昨天作业的题目,说到下面一题:</p><p class="ql-block">5.用5,6,7,8,9这五个数字组成一个三位数和一个两位数(数字不能重复使用),积最大的算式是( )x( )=( )。</p><p class="ql-block"> 这一题从学生作业完成正确率来看,许多同学找的都不是积最大的算式。当时在讲解的时候,学生普遍出现下面三种答案:①987×65=64155②965×87=83955③875×96=84000;接着我马上引导孩子们一起探索为什么第3个算式积最大呢?里面是否存在着一些奥妙。程野猜测是否两位数和三位数,它们的差越接近积就越大呢。比较三组的乘数的差之后发现的确是这样。</p><p class="ql-block">这时候何昕宸的一双小手举起来了,她走上讲台,拿起粉笔在黑板上画了一个英文字母“u”,并在上面依次标出5,6,7,8,9这几个数。接着在中间画一个横线,答案就一览无余的呈现在上面了。她还说,不光可以求出积最大的算式,还可以用另外一种方法求出积最小的算式。这时何俊荣的小手举起来,我让何俊柔上来介绍怎么样找出积最小的算式。只见她在黑板上写了一个英文小写字母“n”,然后按一定的顺序标出5~9这5个数,接着画一个横线,答案就出示了。听后,学生们惊呼这种方法可真方便!课后我在抖音上也找到了这样的视频。</p> <p class="ql-block">我也是第一次听说这种算法,于是把自己的疑问发给了大模型,AI回答如下:</p><p class="ql-block">这个“画U和画N”的方法确实挺有意思的,它其实是数学里一个很经典的“最优化”问题的直观解法。这个算法的依据是“数位原理”,具体来说:</p><p class="ql-block">**核心依据:把大的数字放在高的数位上。**</p><p class="ql-block">我们可以把两位数拆成“十位”和“个位”,把三位数拆成“百位”、“十位”和“个位”。每个数字在不同位置上的“权重”是不一样的:</p><p class="ql-block">- 在三位数里,百位数字的权重是100,十位是10,个位是1。</p><p class="ql-block">- 在两位数里,十位数字的权重是10,个位是1。</p><p class="ql-block">**1. 积最大的情况(画U字):**</p><p class="ql-block">目标是让乘积最大,所以我们要把最大的数字放在权重最高的位置上。</p><p class="ql-block">- **第一步:** 权重最高的位置是三位数的百位(×100)和两位数的十位(×10)。所以,我们应该把手头最大的两个数字(比如9和8)分别放在这两个位置上。</p><p class="ql-block">- **第二步:** 接下来权重次高的位置是三位数的十位(×10)和两位数的个位(×1)。所以,把手头次大的两个数字(比如7和6)放进去。</p><p class="ql-block">- **第三步:** 最后,把剩下的最小数字(比如5)放在权重最低的三位数个位(×1)上。</p><p class="ql-block">这样组合起来,三位数从高到低排列(9, 7, 5),两位数从高到低排列(8, 6),形成的算式就是 `975 × 86`。这个过程用线连起来,数字的排列顺序就像一个“U”字形。</p><p class="ql-block">**2. 积最小的情况(画N字):**</p><p class="ql-block">目标相反,要让乘积最小,就要把最小的数字放在权重最高的位置上,同时还要考虑一个技巧:让两个乘数的大小尽可能接近(因为当和一定时,两个数越接近,乘积越大;反之,要乘积最小,就要让两个数差得越多)。</p><p class="ql-block">- **第一步:** 权重最高的位置依然是三位数百位(×100)和两位数十位(×10)。我们应该把最小的非零数字(比如1)放在三位数百位,次小的数字(比如2)放在两位数十位。</p><p class="ql-block">- **第二步:** 接下来,为了让乘数差值更大,我们应该把剩下的数字中最大的那个放在三位数的个位(权重低),而把较小的放在两位数的个位(权重稍高)。</p><p class="ql-block">- **第三步:** 最后一个数字放在三位数的十位。</p><p class="ql-block">这样组合起来,三位数是 `1(百位)` `(剩下的较小数字)` `(剩下的最大数字)`,两位数是 `2(十位)` `(剩下的较小数字)`。这个过程连起来,数字的排列就像一个“N”字形。</p><p class="ql-block">**总结一下:**</p><p class="ql-block">这个“画U画N”法,本质上是一种**贪心算法**的直观体现。它通过“把最合适的数字,放在最关键的位置”这一步一步的局部最优选择,最终达到了全局最优(积最大或最小)的结果。</p><p class="ql-block">对于数学阅读推广来说,这个例子非常好!它把抽象的“数位原理”和“最优化思想”变得非常直观、好玩,学生一看就能明白,还能自己动手试试。这正是数学魅力的体现——简洁的规则背后,是深刻的逻辑。</p><p class="ql-block"><br></p><p class="ql-block">--------------------------------</p><p class="ql-block">以上内容由AI生成,仅供参考和借鉴</p><p class="ql-block"><br></p><p class="ql-block">读了上面的文字,让人不得不佩服这种算法的简洁和明了。看来有时孩子们的知识面在某方面比我们老师还要广,学习一直在路上!感谢孩子们的精彩分享。</p>