【VB开源代码栏目提醒】:网学会员--在 VB开源代码编辑为广大网友搜集整理了:穷举法在VB求解趣味程序中的应用 - 其他考试资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
职教论坛 ·网络财富 Vocational Education Forum·Intemet fortune 穷举法在
VB求解趣味程序中的应用 唐小健 韶关市中等职业技术学校,广东 韶关 512028【摘要】穷举法是数学竞赛题的一种解题思想方法。
解题时,根据题目的要求,把可能的答案逐一列举出来,然后确定正确的答案,这种方法叫做穷举法。
穷举法用时间上的牺牲换来问题答案的全面性。
在计算机没有发明之前,这种方法在求解一些问题时理论上是可行的,但仅靠人工来操作,效率低下,不能保证解的全面性。
随着计算机运算速度的飞速发展,穷举法的形象已经不再是最低等和原始的无奈之举,比如经常有黑客在几乎没有任何已知信息的情况下利用穷举法来破译密码,足见这种方法还是有其适用的领域的。
VB语言以其自身的强大功能及其诸多优点得到了广泛应用,特别是在各类中职学校,更是把
VB教学作为语言类教学的重中之重。
本人从事计算机高级语言类教学多年,对算法有较深的了解,在此就结合穷举法在
VB求解趣味程序中的应用进行一些探讨,以求拓宽算法(求解问题的方法)在求解问题中的灵活应用。
【关键词】穷举法;
VB;趣味程序;应用;算法 穷举法在求解趣味问题程序中体现出 For y 1 To 33 是假话?强大的作用,下面就例举四个与现实生活 z 100 - x - y 2.问题分析与算法设计有紧密联系的经典趣味问题,采用
VB语言 If 5 x 3 y z / 3 100 Then 分析题目,每个人都有可能说的是真进行分析求解,采用的算法为穷举法。
p Formatx 话,也有可能说的是假话,这样就需要对 一、趣味程序设计编程案例1(百钱 Formaty Formatz 每个人所说的话进行分别判断。
假设三个买百鸡?) 人所说的话的真假用变量A、B、C表示, 1.问题摘要 List1.AddItem p 等于1表示该人说的是真话; 表示这个人 中国古代数学家张丘建在他的《算 End If 说的是假话。
由题目可以得到:经》中提出了著名的“百钱买百鸡问 Next 张三说李四在说谎 张三说的是真题”:鸡翁一,值钱五,鸡母一,值钱 Next 话:a1 and b0三,鸡雏三,值钱一,百钱买百鸡,问 End Sub 或 张三说的是假话:a0 and b1翁、母、雏各几何? 李四说王五在说谎 李四说的是真 2.问题分析与算法设计 话:b1 and c0 设鸡翁、鸡母、鸡雏的个数分别为 或李四说的是假话:b0 and c1xyz,题意给定共100钱要买百鸡,若全 王五说张三和李四都在说谎 王五说买公鸡最多买20只,显然x的值在020之 的是真话:c1 and ab0间;同理,y的取值范围在033之间,可 或王五说的是假话:c0 and ab0得到下面的不定方程: 上述三个条件之间是“与”的关系。
5x3yz/3100 将表达式进行整理就可得到
VB语言的表达 xyz100 4.问题的进一步讨论 式。
所以此
问题可归结为求这个不定方程 这类求解不定方程总理的实现,各层 穷举每个人说真话或说假话的各种的整数解。
循环的控制变量直接与方程未知数有关, 可能情况,代入上述表达式中进行推理运 由程序设计实现不定方程的求解与手 且采用对未知数的取值范上穷举和组合的 算,使上述表达式均为“真”的情况就是工计算不同。
在分析确定方程中未知数变 方法来复盖可能得到的全部各组解。
能否 正确的结果。
化范围的前提下,可通过对未知数可变范 根据题意更合理的设置循环控制条件来减 3.
VB程序实现如下围的穷举,验证方程在什么情况下成立, 少这种穷举和组合的次数,提高
程序的执从而得到相应的解。
行效率? 3.
VB程序实现如下 二、趣味程序设计编程案例2(谁在 Private Sub Command1_Click 说谎?) List1.FontSize 15 1.问题摘要 List1.Clear 张三说李四在说谎,李四说王五在 List1.AddItem“公鸡 母鸡 小鸡” 说谎,王五说张三和李四都在说谎。
现在 For x 1 To 19 问:这三人中到底谁说的是真话,谁说的转化成人民币资产,等待人民币的升值预 面,造成拥有好业绩的企业上市比较困 技大学.2005. 3张立军.中国证券市场风险监管研究D.哈尔滨工程期的实现,达到获利的目的。
难,而业绩较差的上市公司退出市场也 大学.2005. 3.3 其他方面 比较困难。
4许岩.上市房地产公司股票收益率与系统风险关系研 股票市场机制、股权结构和信息披露 究---基于A股市场D.西安建筑科技大学2009.机制等因素也会对房地产股票系统风险产 参考文献生影响。
作者简介: 马晓娜(1984—),女,回族,新疆伊 1徐谦.中国资本市场
系统性风险分析与防范D.西北 犁人,西安建筑科技大学管
理学院硕士,研究方向: 股票市场机制不健全带来的风险主 大学.2003. 投资决策与评估。
要体现在市场准入和退出机制不合理方 2王小玲.中国股票市场系统风险实证研究D.武汉科 77 2009年7月 网络财富
网络财富· 职教论坛Intemet fortune·Vocational Education Forum Private Sub Command1_Click For a 1 To 0 Step -1 2、3张。
采用穷举方法进行组合,可以求 Dim a As Integer b As Integer For b 1 To 0 Step -1 出这些不同面值不同张数的邮标组合后的c As Integer For c 1 To 0 Step -1 邮资。
For a 0 To 1 For d 1 To 0 Step -1 3.
VB程序实现如下 For b 1 To 1 For e 1 To 0 Step -1 For c 0 To 1 For f 1 To 0 Step -1 If a 1 And b 0 Or a If a b 1 And a d 2 And0 And b 1 And b 1 And c 0 a e f 2 And b c 0 Or b Or b 0 And c 1_ And c 1 c 2 And c d 1 And d e 0And a b 0 Or c 0 And a Or d 1 Thenb 1 Then List1.AddItem“A will“ IIfa List1.AddItem 1“” “not”“ be assigned” List1.AddItem “ 张三说” “(去)”IIfa 1 “真话” “假话” List1.AddItem“B will“ IIfb List1.AddItem“李四说” IIfb 1“”“not” “be assigned”1“真话” “假话” “(去)” Private Sub Command1_Click List1.AddItem “王五说” IIfc List1.AddItem“C will“ IIfc List1.Clear 1 “真话” “假话” 1“”“not” “be assigned” For san 0 To 4 End If “(去)” For wu 0 To 3 Next List1.AddItem“D will“ IIfd youzi san 3 wu 5 Next 1“”“not”“be assigned” If youzi 0 Then Next “(不去)” List1.AddItem “三分的邮票取” End Sub List1.AddItem“E will“ IIfe san “张” “ 五分的邮票取” 三、趣味程序
设计编程案例3(委派 1“”“not” “be assigned” wu “张” _任务?) “(不去)” “邮资为:” Formatyouzi 1.问题摘要 List1.AddItem“F will“ IIff “” “分” 某侦察队接到一项紧急任务,要求在 1“”“not”“ be assigned” List1.AddItem Chr13 Chr10A、B、C、D、E、F六个队员中尽可能多地挑 “(去)” End If若干人,但有以下限制条件:1A和B两人 End If Next中至少去一人;2A和D不能一起去;3A、E Next Next和F三人中要派两人去;4B和C都去或都不 Next MsgBox “共有” List1.去;5C和D两人中去一个;6若D不去,则E Next ListCount / 2 “种邮资组合!”也不去。
问应当让哪几个人去? Next 64 “输出结果:” 2.问题分析与算法设计 ext End Sub 用A、B、C、D、E、F六个变量表示六 Next 19种邮资组合: 5 10 15 3 8个人是否去执行任务的状态,变量的值为 End Sub 13 18 6 11 16 21 9 14 19 241,则表示该人去;变量的值为0,则表示 12 17 22 27该人不参加执行任务,根据题意可写出表 总之,灵活应用穷举法,可以很方便达式: 的求解许多现实生活中的趣味问题,同时 ab1 A和B两人中至少去一人; 也可以进一步拓宽自己解决问题的思维, ad2 A和D不能一起去; 体味到
计算机程序设计的乐趣,从而提高 aef2 A、E、F三人中要派两人去; 自己编程解决实际问题的能力。
bc0或bc2 B和C都去或都不去; cd1 C和D两人中去一个; 四、趣味程序设计编程案例4(邮票 作者简介: 唐小健(1972—),男,江西安远人, de0或d1 若D不去,则E也不去 组合问题) 计算机工学学士,中学计算机一级教师,单位一线骨 干教师,现供职于广东省韶关市中等职业技术学校,都不去;或D去E随便。
1.问题摘要 指导学生参加省市级计算机程序设计竞赛多次获得 上述各表达式之间的关系为“与” 某人有四张3分的邮票和三张5分的邮 省、市一等奖,在多种全国中文核心期刊上发表
论文关系。
穷举每个人去或不去的各种可能情 票,用这些邮票中的一张或若干张可以得 多篇并获奖。
况,代入上述表达式中进行推理运算,使 到多少种不同的邮资?上述表达式均为“真”的情况就是正确的 2.问题分析与算法设计结果。
将问题进行数学分析,不同张数和面 3.
VB程序实现如下 值的邮票组成的邮资可用下列公式计算: Private Sub Command1_Click S3i5j Dim a As Integer b As Integer 其中i为3分邮柰的张数,j为5分的张数c As Integer d As Integer e As 按题目的要求,3分的邮票可以取0、Integer f As Integer 1、2、3、4张,5分的邮票可以取0、1、 网络财富 2009年7月 78