老师
同学们大家好,在实际应用中,单独使用 for 循环和 while 循环。单循环语句往往无法解决复杂的问题。如需要解决类似工作要做很多遍,而每一遍工作都是需要重复做一些事情的问题就要用到多重循环,即循环嵌套。如果某一种循环语句中包含着自身或者其他循环语句,就称为循环的嵌套。 for 循环和 whale 循环之间可以相互嵌套。
老师
我们来看一个例子,项目小组经过讨论,选择购买单价分别为 1. 8 元的笔记本、 1. 9 元的笔、 2. 1 元的小饰品作为活动的赠品,每一种物品至少满 100 件,并且尽可能地用完 1000 元经费。如何设计方案才能实现购买物品数量最多?如果数量相同的情况下,余额最小的方案为最佳。方案中每一种物品的数量是多少?余额是多少?我们来分析一下这个问题。最优采购方案其实可以分为两个问题来解决。第一个问题,三种物品每种至少购买 100 件,尽可能用完 1000 元经费的条件下,购买物品数量最多。第二个问题,在计算出购买物品数量最多的情况下,剩余的余额最少。要完成这个计算,单循环结构就做不到了,我们需要循环嵌套的结构来完成。
老师
设购买单价为 1. 8 元、 1. 9 元、 2. 1 元的物品数量分别为x、y、z,当前余额为 r 元,所买的物品总数量为s。根据题目意思,有下面的关系式, 1. 8X 加 1. 9Y 加 2. 1 Z 小于等于1000。根据题目意思,x、y、 z 最小取值为100,也就是x、y、 z 都要大于等于100。由不等式 1. 8X 加 1. 9Y 加 2. 1 Z 小于等于1000,可以得出 x 的最大取值为 1000 / 1. 8 取整为555。以此类推, y 的最大值为526, z 的最大值为476。
老师
根据前面的分析,先来解决第一个问题,三种物品每种至少购买 100 件,尽可能用完 1000 元经费的条件下,购买物品数量最多。由上述x、y、 z 的取值范围分析,我们将x、y、 z 分别从 100- 555, 526476 逐个穷举,在满足关系式 1. 8X 加 1. 9Y 加 2 点一 z 小于等于 1000 的条件下,如果此时三种纪念品的数量之和大于纪念品的数量s,那么更改 s 的值为现在三种纪念品的数量之和,此时循环结束。 s 为最大值,即购买物品的数量最多,此时的余额为 r 负值为 1000 -查看隐藏内容