1、 开学之际,同学们纷纷忙于购置各种学习文具,假设现在同学手中有50元的现金,用于购买下列物品,以何种方式搭配购买能够让资金最大化利用呢?笔记本单价:6元/本签字笔单价:5元/支橡皮单价:4元/块第三章 算法基础需求分析问题描述:三种商品单价分别为6元,5元,4元;用于购买商品的总资金为50元;需求:现求三种商品分别的购买数量,可让资金刚好用完(要求每种商品的购买数量不得小于1)。3.1体验计算机解决问题的过程思考如果假设购买三种文具的数量分别为x,y,z同学们是否可以据此列出含有x,y,z的数学方程来表达这一关系呢?第三章 算法基础小组讨论讨论要求:(1)列出含有x,y,z的求解方程 (2)分
2、析x,y,z的取值是否存在界限范围,如果有,这个界限范围是多少?(3)求解该方程的方法是什么?3.1体验计算机解决问题的过程第三章 算法基础小组讨论讨论要求:(1)列出含有x,y,z的求解方程 (2)分析x,y,z的取值是否存在界限范围,如果有,这个界限范围是多少?(3)求解该方程的方法是什么?3.1体验计算机解决问题的过程6x+5y+4z=50极限情况下,假设y和z都为1,则x可取到最大值为6,同理,y有最大值为8,z有最大值为10故,1 x 6,1 y 8,1 z 10第三章 算法基础问题转化3.1体验计算机解决问题的过程求解三元一次方程 6x+5y+4z=50求三种商品的最佳购买搭配搭配
3、方案方程的正整数解第三章 算法基础问题解决3.1体验计算机解决问题的过程 由于三元一次方程6x+5y+4z=50不存在其它约束条件,可以尝试把x,y,z的取值都计算一次来判断其是否满足条件:思路:令y=1,z=1,令x=1,计算6x+5y+4z是否等于50;令y=1,z=1,令x=2,计算6x+5y+4z是否等于50;令y=1,z=1,令x=6,计算6x+5y+4z是否等于50;令y=2,z=1,令x=6,计算6x+5y+4z是否等于50;找到:x=6,y=2,z=1是方程的一个正整数解,但是解唯一吗?思考第三章 算法基础问题反思3.1体验计算机解决问题的过程 由于三元一次方程6x+5y+4z
4、=50不存在其它约束条件,方程的正整数解可能存在多个。且由于x,y,z的取值可能分别有6、8、12种,经排列组合计算,x,y,z可能的取值情况有 种。也就是说,通过手工计算的方式,我们必须对所有的取值情况进行逐一计算,判断其是否满足等于50的条件,若满足,则该取值情况是方程解集中的一个,若不满足,则继续计算。这种对变量一定取值范围内所有情况依次进行计算和判断的方法,称为遍历。6 X 8 X 10=480过程步骤第三章 算法基础3.1体验计算机解决问题的过程需求分析求最佳购买方案问题转化求三元一次方程6x+5y+4z=50正整数解集设计算法遍历所有取值可能编写程序用Python语言实现计算程序调
5、试运行运行程序,得出结果使用计算机解决问题的一般过程 在现实生活中,我们经常需要对数据进行统计、分析。当数据量不多时,我们可以采用人工方法来处理;然而,当数据量变多时,我们运用计算机来解决问题将是一种更高效、更便捷的方案。第三章 算法基础设计算法u 问题转化:求解三元一次方程6x+5y+4z=50的所有正整数解u 设计方案:通过遍历x,y,z在各自取值范围内的所有取值可能,逐一判断是否满足条件。解决实施:编程指的就是利用计算机程序语言设计、实现计算机应用程序的过程。3.1体验计算机解决问题的过程 采用计算机对方程进行求解,由于不存在计算该问题的专门应用程序,考虑采用编程的方法编写计算程序进行解
6、决。编写程序第三章 算法基础3.1体验计算机解决问题的过程 Python是一种面向对象的高级程序语言,具有轻巧灵活的编程特点,可以用于快速开发简单易用的计算机应用程序。Visual Studio Code,简称VS Code,是微软公司开发的快捷源代码编辑器,支持多种程序语言,例如C、C+、Python、Java等。编写程序第三章 算法基础3.1体验计算机解决问题的过程代码编辑区调试输出区功能菜单区编写程序第三章 算法基础3.1体验计算机解决问题的过程调试运行体验 请根据老师的演示,尝试打开电脑上的“解三元一次方程.py”代码文件,并根据文件中的提示将代码补全,并运行程序,观察程序运行结果,得出结论。第三章 算法基础u计算机解决问题的过程:u1、提出问题 2、问题转化 3、设计算法 4、编程实现 5、调试运行思维方法:数学转化u将解决特定的实际问题转化为解决具有一般性的数学问题,这是利用计算机解决实际问题的关键。u例如在本课中,我们将“求解最佳商品购买方案”的问题转化为求解一个三元一次方程的正整数解集的问题,从而设计让计算机可以执行的算法。3.1体验计算机解决问题的过程课堂小结