3.12用解析穷举法解决问题2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小 结
1、穷举法特点: 求解对象有限,按照某种规则
2、穷举法分析: ⑴确定范围 ⑵验证条件
任务三:百钱买百鸡”
相传我国南北朝时,京城有个卖鸡的张姓老汉,他有一 个儿子非常聪明,尤其擅长算术,到十二三岁时已是远近闻 名的“小神童”了。当朝宰相听说后想试探个究竟,于是派 仆人到张老汉的店里打听鸡的价钱,张老汉告知“公鸡五文 钱一只,母鸡三文一只,小鸡一文三只”。于是,仆人给他 一百文钱,要求公鸡、母鸡、小鸡都要,命他次日送到府上。 这可难为了张老汉,他怎么凑也凑不够这个数,只好问儿子。 “小神童”不慌不忙,掐指一算就给出了答案,第二天照数 送到宰相府。宰相见难不倒“小神童”,又让仆人给张老汉 一百文钱,要求再买一百只鸡,搭配方法不能和上次一样。 结果“小神童”又很快给出了答案,宰相暗暗称奇,想最后 再试一次,谁知还是没有难倒“小神童”。 这个故事就是我国古代数学名著《张邱建算经》里的百 鸡百钱问题。请用穷举法求解所有的组合方法。
水仙花数代码:
Dim x, a, b,c As Integer For x = 100 To 999 a = x \ 100 b = (x - a * 100) \ 10 c= x - a * 100 - b * 10 If a^3 + b^3 + c^3 = x Then Print x End If Next x
这些表达式,问题也就得以解决。
通过对解析法的概念分析,我们可
以得出这样的结论:凡能用解析法
求解的问题都可以通过定量分析,
并能用解析表达式来描述。
用解析法解决问题的过程应该是:
分析问题→抽取模型→用解Baidu Nhomakorabea表达
式表示→解表达式→问题解决。
4、问题分析--钻石图案设计
⑴观察日常生活中的钻石
思考:如果把钻石看成是由 一个圆球雕刻,那么钻石中 的“点”有什么特征?
鸡每只5元,小鸡每只1元,用一百元买一
百只鸡,问每种鸡应各买多少?
答案: 穷举法
国内特快专递每200克为一个计费单位,
200克以内20元,200克以上每续重200克 (不足200克按200克计算)6元,现在要 编写一个程序输入包裹重量自动计算出价 格,哪种算法最合适?
答案:
解析法
为什么系统要限制输入密码的次数?
( x7,y7 ) ( x8,y8 )
( x9,y9 )
5、用伪代码描述点及线段
For i=1 to 总的点数 求出第i个点的坐标(rcos(iθ), rsin(iθ)) for j=1 to 总的点数 if i点和j点不是同一个点 then 求j点的坐标(rcos(jθ), rsin(jθ)) 画出i点到j点的线段 end if next j next i 观察一下,这个算法描述的程序是一个什么结构?
3.2 用穷举法解决问题
1.什么是穷举法? 也叫枚举法、列举法 ——将求解对象一一列举出来,然后 逐一加以分析、处理,并验证结果是否 满足给定的条件,穷举完所有对象,问 题将最终得以解决。
任务一:水仙花数
水仙花数是指一个三位数,它的各位数的立 方和正好等于该数本身。如:153=13+53+33。 请设计算法求解“水仙花数问题”。
模拟画图过程 ( x3,y3 ) ( x4,y4 )
2θ
( x2,y2 )
( x1,y1 )
( x5,y5 )
θ
( x10,y10 )
( x6,y6 )
( x7,y7 ) ( x8,y8 )
( x9,y9 )
根据输入的
x 值,计算 y 并输出。
看一个问题能否用解析法解决
⑴看这个问题能不能用解析表达式描
3.2 用穷举法解决问题
用穷举法解决问题
计算机的特点之一就是运算速度快、 善于重复做一件事情,“穷举法”正是基 于这一特点的最古老的算法。它一般是一 时找不到解决问题的更好的途径,即从数 学上找不到求解的公式或者规则时,根据 问题中的“约束条件”,将解的所有可能 情况一一列举出来,然后再逐一验证是否 符合整个问题的求解要求,从而得到问题
1、用解析法解决问题
2、用穷举法解决问题
1、用解析法解决问题
例题:北京到上海全程(
s )1400 千米,
火车时速( v ) 100km/h,所需时间为
T = S / V =14h
解析法的概念:
解析就是剖析、深入分析的意思。
解析法就是在分析具体问题的基础上,
抽取出一个数学模型,这个数学模型能 用若干个解析表达式表示出来,解决了
⑴确定范围:
⑵验证条件:
水仙花数算法:
穷举范围
For 某整数=100 to 999 If 该数百位数字的立方+该数十位数字的立 方+该数个位数字的立方=该数 Then print 该数 End if 满足条件 Next 某整数
任务二:实践求三位水仙花数程序
a=x\100 b=(x-a*100)\10 c=x-a*100b*10
if 购买数量超过10件以上(包括10件) then
应付款数=批发价×数量 else 应付款数=零售价×数量 endif 找回零钱=顾客付款总额—应付款数
实践题2:
科技馆的门票价格为每人10元,但对团 体票(8 人以上)实行 8 折优惠;持有 学生证可以半价购票;军人免费。请 为科技馆设计一个程序实现上述功能
百钱买百鸡
⑴确定范围 公鸡 母鸡 小鸡
⑵验证条件:
5*x +3*y+1/3*z=100 x+y+z=100
百钱百鸡代码:
Dim x, y, z As Integer For x = 1 To 20 For y = 1 To 33 For z = 1 To 300 If (5 * x + 3 * y + 1 / 3 * z = 100) And (x + y + z = 100) Then Print x, y, z End If Next z Next y Next x End Sub
述出来
⑵这个解析表达式能否被解决。
解析法解决问题步骤
1、问题分析 未知----已知 数学表达式
2、编程实现
问题引入:
——了解解析法具体实现的各个环节
问题1:一位农场主养了许多鸡和兔子,有一天
他却发现黄鼠狼偷走了他的鸡和兔子,并且弄坏 了鸡窝和兔窝中间的隔板(导致鸡兔同笼),他 想计算损失,可是由于鸡兔不配合,他只数出了 头有31只,脚有86只,让我们来帮帮他,计算出鸡 兔各多少只吧!
问题深入:
问题2:农场主又犯了难,倘若下次再出
现这样的问题,将如何算出鸡兔各多少 呢?(假设头m只,脚n只)
思考:
头m只,脚n只
1、列方程组 : 设鸡x只,兔y只。
什么是解析法
通过分析获得数学模型 分解为若干个解析表达式
数学模型
表达式
问题
实践题1:
某超市规定,顾客购买同种商品10件以上(包括10件)可享 受批发价。请设计一个收款机程序,输入顾客所购商品的零售 价、批发价、购买数量及付款数,程序能计算出顾客的应付款 及需要找回的零钱,请用伪代码描述算法。 伪代码
穷举法的使用范围是() A、一切问题 B、解的个数极多的问题 C、解的个数有限且可一一列举 D、不适合设计算法
我们在用计算机解决问题时,常采用的算
法有解析法、穷举法、递归法、冒泡排序 法、选择排序法等,分析下列问题应采用 哪种算法解决?
求解“百鸡问题”,已知公鸡每只3元,母
’定义变量x,a,b,c为整数型 ’循环变量范围 ’ 百位数字赋值给a ’十位数字赋值给b ’个位数字赋值给c ’如果条件成立,则 ’输出水仙花数x
穷举法的适用条件:
①求解对象应该是有限的; ②可以按照某种规则列举对象 ③一时找不出解决问题的更好途径时;
穷举法解决问题步骤:
⑴确定范围:
⑵验证条件:
钻石的所有点都落在圆球上。
⑵用数学分 析方法求出 各点的位置 ( x4,y4 )
X2=rcos2θ
( x3,y3 )
( x2,y2 )
y2=rsin2θ
( x1,y1 )
X1=rcosθ y1=rsinθ
( x5,y5 )
2θ
θ
( x10,y10 )
X10=rcos10θ y10=rsin10θ
( x6,y6 )