用穷举法设计程序 南京师范大学 教育技术系 倪佳慧 2018. 10
有一根长为600cm的钢筋,需要截成长度为69cm, 39cm, 29cm的三种规格的短料,在三种规格的短料都 至少有一段的前提下,如何截取才能使余下的材料最少? 如果不会编程,你会怎样 解决这个问题?
穷举法 列举一切与命题相关的情况,然后依据问题设定的条件,逐个检查,找到满足条件的解。 问题解决方案的数量比较多,数值比较大。 可以用循环语句来实现。 在什么时候用到穷举法?
循环语句 For 循环变量=初值 to 终值 [Step 步长] <语句块> Next 循环变量
穷举法求解问题的基本过程 一、分析问题 将文字语言转化为数学语言 1<=i<=8 1<=j<=15 1<=k<=20 69*i+39*j+29*k<=600
穷举法求解问题的基本过程 二、设计算法 将数学语言转化为计算机语言 通过流程图来展现算法 如何把所有的情况都穷举出来?
开始 否 i=1 i+1 i<=8 J=1 J+1 K=1 K+1 69*i+39*j+29*k<=600 否 J<=15 Print i, j, k 否 K<=20 否 结束
穷举法求解问题的基本过程 三、编写程序 Private Sub Command1_Click() Dim i As Integer Dim j As Integer Dim k As Integer Dim n As Integer n = 0 For i = 1 To 8 For j = _________ For k = _____________ If ____________________________ Then n = n + 1 Print “第”;n; “个方案” Print Tab(10); "69cm:"; i; "根"; Print Tab(25); "39cm:"; j; "根"; Print Tab(40); "29cm:"; k; "根" End If Next k Next __ End Sub j i 1 to 15 1 to 20 69*x+39*y+29*z<=600
穷举法求解问题的基本过程 四、调试程序 寻找最优的解决方案? 让计算机自己寻找最佳的解决方案
思考题 如果有一个4位数等于它的各位数字的4次方和,则这个4位数称 为“玫瑰花数”。 例如1634就是一个玫瑰花数:1634=14 + 64 + 34 + 44 提示: 千位A= x \ 1000 百位B= (x-1000*A) \ 100 十位C= (x-1000*A-100*B) \ 10 个位D= x mod 10
穷举法和循环语句 穷举法解决问题的基本过程 分析问题 设计算法 编写程序 调试程序