算法的程序实现_第1页
算法的程序实现_第2页
算法的程序实现_第3页
算法的程序实现_第4页
算法的程序实现_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用解析法解决问题什么是解析法解析法就是在分析具体问题的基础上,抽取出一个数学模型,这个数学模型能用若干解析表达式表示出来,解决了这些表达式问题也就得到了解决。解析法是程序设计中最常用的算法之一。解析法解决问题步骤1、问题分析未知----已知数学表达式

S=(a+b)*h/22、编程实现3.2用穷举法解决问题1.什么是穷举法?也叫枚举法、列举法——将求解对象一一列举出来,然后逐一加以分析、处理,并验证结果是否满足给定的条件,穷举完所有对象,问题将最终得以解决。任务一:水仙花数水仙花数是指一个三位数,它的各位数的立方和正好等于该数本身。如:153=13+53+33。请设计算法求解“水仙花数问题”。水仙花数代码:Dimx,b,s,gAsIntegerForx=100To999Step1a=i\100b=(i-a*100)\10c=i-a*100-b*10Ifa^3+b^3+c^3=xThenPrintxEndIfNextx①求解对象应该是有限的;②有穷举规则③一时找不出解决问题的更好途径时;穷举法的适用条件:穷举法解决问题步骤:通常可以从两个方面进行分析:⑴确定范围:问题所涉及的情况有哪些,情况的种数可不可以确定。⑵验证条件:分析出来的这些情任务二:百钱买百鸡”

相传我国南北朝时,京城有个卖鸡的张姓老汉,他有一个儿子非常聪明,尤其擅长算术,到十二三岁时已是远近闻名的“小神童”了。当朝宰相听说后想试探个究竟,于是派仆人到张老汉的店里打听鸡的价钱,张老汉告知“公鸡五文钱一只,母鸡三文一只,小鸡一文三只”。于是,仆人给他一百文钱,要求公鸡、母鸡、小鸡都要,数量不多不少正好一百只,命他次日送到府上。这可难为了张老汉,他怎么凑也凑不够这个数,只好问儿子。“小神童”不慌不忙,掐指一算就给出了答案,第二天照数送到宰相府。宰相见难不倒“小神童”,又让仆人给张老汉一百文钱,要求再买一百只鸡,搭配方法不能和上次一样。结果“小神童”又很快给出了答案,宰相暗暗称奇,想最后再试一次,谁知还是没有难倒“小神童”。这个故事就是我国古代数学名著《张邱建算经》里的百鸡百钱问题。请用穷举法求解所有的组合方法。百钱买百鸡⑴确定范围⑵验证条件:百钱百鸡代码:

Dimx,y,zAsInteger

Forx=1To20

Fory=1To33

Forz=1To100

If(5*x+3*y+1/3*z=100)And(x+y+z=100)Then

Printx,y,z

EndIf

Nextz

Nexty

Nextx

EndSub我们使用信用卡在柜员机上取钱时,为什么系统要限制输入密码的次数?小结1、穷举法分析:⑴确定范围⑵验证条件2、自觉遵守网络道德与法规数组3.1概述

数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。其表示形式:A(1),A(10)X(1,1),X1(1,10),X(2,10)Y(0,0,0),Y(1,2,5)VisualBasic中的数组,按不同的方式可分为以下几类:按数组的大小(元素个数)是否可以改变来分为:定长数组、动态(可变长)数组。按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。按数组的维数可分为:一维数组、二维数组、多维数组。对象数组:菜单对象数组、控件数组。3.2一维数组3.2.1一维数组的声明

形式:

Dim数组名([<下界>to]<上界>)[As<数据类型>]或:Dim数组名[<数据类型符>]([<下界>to]<上界>)例:Dima(1to10)AsInteger‘声明了a数组有10个元素与上面声明等价形式:Dima%(1to10)1是下标的下界10是下标的上界数组元数的数据类型说明:1.数组名的命名规则与变量的命名相同。2.数组的元素个数:上界-下界+1。3.缺省<下界>为0,若希望下标从1开始,可在模块的通用部分使用OptionBase语句将设为1。其使用格式是:OptionBase0|1'后面的参数只能取0或1例如:OptionBase1'将数组声明中缺省<下界>下标设为14.<下界>和<上界>不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。5.如果省略As子句,则数组的类型为变体类型。6.数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是下标大小的顺序,如图5-1所示:二、排序问题1.选择法排序算法思想:1)对有n个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第1个数交换位置;2)除第1个数外,其余n-1个数中选最小或最大的数,与第2个数交换位置;3)依次类推,选择了n-1次后,这个数列已按升序排列。1.选择法排序算法思想:1)对有n个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第1个数交换位置;2)除第1个数外,其余n-1个数中选最小或最大的数,与第2个数交换位置;3)依次类推,选择了n-1次后,这个数列已按升序排列。Fori=1Ton-1p=iForj=i+1TonIfa(p)>a(j)Thenp=jNextjtemp=a(i)a(i)=a(p)a(p)=tempNexti选择法排序(升序)的VB程序:2.冒泡法排序(递增)

算法思想:(将相邻两个数比较,小的调到前头)1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thentemp=a(j)a(j)=a(j+1)a(j+1)=tempEndifNextjNexti冒泡法排序(升序)的VB程序:3.5用递归法解决问题“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?”…………故事这个故事有什么特点?自己调用自己如果在一个函数中,它自己调用了自己,这种现象叫递归调用。如果A函数调用B函数,B函数又反过来调用A函数,那这种现象也叫做递归调用。如果一个函数在定义时,直接或间接的调用了自己,这种算法在程序设计中统称为递归法。自定义函数递归法一般需要定义函数来实现。虽然VB为我们提供了大量的标准函数,但我们在实际应用时难免有时还是找不到合意的,那就只有自己解决了,这样为了一个特定的任务而编出来的函数叫自定义函数。Abs()、len()、date()、sqr()、msgbox()等使用递归算法必须要满足以下的递归条件:(1)存在递归结束条件及结束时的值(2)能用递归形式表示,且递归向终止条件发展递归调用算法兔子繁殖问题

有人养了一对兔子,这对兔子以后每月生一对兔子,新生兔子从第三个月开始,也是每月生一对兔子.从第三个月起

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论