算法设计与分析复习资料

算法设计与分析复习资料
算法设计与分析复习资料

1.什么是算法?

算法是一系列解决问题的指令,对符合规范的输入,能在有限时间内获得预期的输出。

2.算法的特点?

有穷性-有限步内完成;确定性-每一步是确定的,不能有二义性;可行性-每一步有意义,每一步能求解;输入-须检查输入值值域合法性;输出-输出问题的解,无输出的算法没有意义。

补:排序算法的特点:稳定性,在位性。

稳定性:如果一个排序算法保留了等值元素在输入中的相对顺序,他被称为是稳定的。换句话说,如果一个输入列表包含两个相等的元素,他们的位置分别是i和j。i

在位性:如果一个算法不需要额外的存储空间(除了个别存储单元外),我们称它是在位的。

3.求最大公约数的伪码?

Euclid(m,n)

//计算m和n最大公约数的欧式算法

//输入:两个不全为0的非负整数m>=n

//输出:m和n的最大公约数

while n≠0 do{

r←m mod n

m←n

n←r}

return m

4.问题求解过程

理解问题;了解设备性能选择计算方法,精确或近似接法高效的数据结构算法的设计技术;设计算法;正确性证明;分析算法;编程实现算法。1-2-3-4-5-6.4-3,4-2,5-3,5-2

(理解问题;决定:计算方法:精确或近似方法:数据结构:算法设计技术;设计算法;正确性证明;分析算法;根据算法写代码.)

5.算法分析主要步骤(框架)

算法的运行效率也称为计算复杂性(计算复杂度);

计算复杂性:时间复杂性(时间效率)空间复杂性(空间效率)

时间效率-算法运行所耗费的时间。

空间效率-算法运行所需的存储空间。

输入规模

事实:几乎所有算法对更大规模的输入都要耗费更长的时间!即算法耗时随输入规模增大而增大;

增长函数

定义为输入规模的函数,用它来研究算法;

输入规模的选择

它的选择比较直接容易。

6.n元列表查找最大值-数组实现列表

MaxElement(A[0..n-1])

maxval←0

for i←1 to n-1 do

if A[i]>maxval

maxval←A[i]

return maxval

7.检查数组元素是否唯一

UniqueElement(A[0..n-1])

for i←0 to n-2 do

for j←i+1 to n-1 do

if A[i]=A[j] return false

return true

8.计算方阵A B的矩阵乘积

MatrixMultiplication(A[0..n-1][0..n-1],B[0..n-1][0..n-1])

for i←0 to n-1 do//行循环

for j←0 to n-1 do//列循环

M[i][j]←0.0 //积矩阵初始化

for k←0 to n-1 do//用变量k表示变化的脚标

M[i][j]←M[i][j]+A[i][k]*B[k][j]

return M

9.计算十进制正整数n的二进制位数b算法的时间复杂性分析Binary(n)

count←1

while n>1 do

count++

n←「n/2「

return count

10.求m,n最大公约数

gcd(int m,int n)

//求m,n最大公约数的欧式递归版本

//输入:两个正整数m≥n

//输出:最大公约数

{

if(n=0)//递归出口,结束递归

write(M);//输出结果

else

gcd(n,m mod n);

}

11.选择排序(每次从数组中选取最小的按顺序插入) SelectionSort(A[1..n])

{for i←1 to n-1 do

min←i

for j←i+1 to n do

if(A[j]

A[i]?A[min]}

12.冒泡排序(相邻的比较,a

{ for i←1 to n-1 do

for j←1 to n-i do

if(A[j]>A[j+1])

A[j]?A[j+1]

}

13.顺序查找

SequentialSearch(A[n..n],k)

{ A[n]←K

i←0

while(A[i]≠k) i←i+1

if(i

else return(-1)

}

14.串匹配

BruteForceStringMatch(T[0..n-1],P[0..m-1])

{for i←0 to n-m do

{ j←0

while j

j←j+1

if i=m return i

}

return -1

}

15.最近对

BruteForceCloserPoints(Object P[1..n])

{ dmin←∞

for i←1 to n-1 do

for j←1 to n do

d←sqrt((Xi-Xj)2+(Yi-Yj)2)

if(d

return(index1,index2)

}

16.分治算法

DivideandConquer(s)

{

if(|s|≤t)then adhocery(s)

else

{ divide s into smaller subset s1,s2,sk

for i←1 to k do

{Yi←DivideandConquer(Si)}

return merge(Y1,Y2,Yk)

}}

17.分治法查找最大元素DivideandConquerSearchMax(S)

{ t←2

if(|S|≤t)then return max(S1,S2)

else{

divide S into two smaller subset S1 and S2,|S1|=|S2|}=|S|/2 max1=DivideandConquerSearchMax(S1)

max2=DivideandConquerSearchMax(S2)

return max(max1,max2)}}

18.合并排序之分治算法

MergeSort(A[0..n-1])

{ if(n>1){

copy A[0..」n/2」-1]to B[0..」n/2」-1]

copy A[」n/2」..n-1]to C[0..」n/2」]

MergeSort(B)

MergeSort(C)

Merge(B,C,A)}}

Merge(B[0..p-1],C[0..q-1],A[0..p+q-1])

{i←0,j←0,k←0

while i

if(B[i]≤C[j])

A[k]←B[i],i←i+1

else A[k]←B[j],j←j+1

k←k+1

if(i=p)copy C[j..q-1]to A[k..p+q-1]

else copy B[j..q-1]to A[k..p+q-1]}

19.快速排序

QuickSort(A[L..R])

{ if(L

S←Partition(A[L..R])

QuickSort(A[L..S-1])

QuickSort(A[S+1..R])}

Partition(A[l..r])

p←A[l] i←l; j←r+1

repeat

repeat i←i+1 until A[i]≥p

repeat j←j-1 until A[j]≥p

swap(A[i],A[j])

until i≥j

swap(A[i],A[j]

swap(A[l],A[j]

return j

20.两次扫描确定分区算法

Partition(A[L..R])

{ p←A[L]

i←L+1,j←R

while(true)

{ while(A[i]

while(A[j]>q)and(j≥R)do j←j-1

if(i≥j)then break

swap(A[i],A[j])}

swap(A[L],A[j])

return (j)}

21.折半查找

BinarySearch(A[0..n-1],K)

{L←0,R←n-1

while(L

m←」(L+R)/2」

if(K=A[m])return m

else if(K

else L←m+1

return(-1)}

22.插入排序(比较两个相邻的数,依次从小到大插入) InsertionSort(A[0..n-1])

{ for(i←1 to n-1) do

j←i-1,V←A[i]

while(j≥0 and A[j]>V)

A[j+1]←A[j]

j←j-1

A[j+1]←V}

23.DFS递归版

DFSRecursion(vertex v)

{ count←count+1

visit(v)

Mark[v]←count

for each vertex w adjacent to v do

if Mark[w]=0 then

DFSRecursion(w)}

非递归:

DFS(Graph G,Vertex v)

{ count←0

virst(v)

Initialize(S)

Push(v)

while(isEmpty(S)=FALSE)

x←Pop(S)

for each vertex w adjacent to x do

if Mark[w]=0 then

virst(w),count←count+1,Mark[w]←count

Push(w)}

23.BFS非递归算法

BFS(Graph G,Vertex v)

{ count←0 virst(v) Initialize(Q) Enqueue(v)

while(isEmpty(Q)=FALSE)

x←Dequeue(Q)

for each vertex w adjacent to x do

if Mark[w]=0 then virst(w),count++,Mark[w]←count Enqueue(w)}

24.预排序检验数组中元素唯一性PresortElementUniqueness(A[0..n-1])

For i←0 to n-2 do

if A[i]=A[i+1]

return false

return true

时间效率

蛮力法:2n

变治法:T(n)=Tsort(n)+Tscan(n)

∈O(nlogn)+O(n)∈O(nlogn)

25.变治法预排序

蛮力法效率:T(n)=1+…+n-1∈Θ(n*n)

变治法预排序:T(n)=n-1

PresortMode_1(A[0..N-1])//行程算法,对数组排序

i←0,ModeFrequency←0//最大频率

while(i≤n-1)

runlength←1,runvalue←A[i]

while(i+runlength≤n-1 and A[i+runlength]=runvalue)

runlength ++

if(runlength>ModeFrequency)

ModeFrequency←runlength,modeValue←runvalue

i←i+runlength

return(ModeValue,ModeFrequency

26.堆构造的值交换算法

HeapValueExchange(H[1..n])

For i←」n/2」downto 1 do

k←I,v←H[k]

heap←FALSE

while(not heap)and(2*k≤n)do

j←2*k if(j+1≤n)

if(H[j]

if(v≥H[j] heap←TRUE

else{H[k] ←H[j],k←j}

H[k] ←v

时间效率T(n)=Ε(n=o,h-1)[2(h-k)2k次方]=2hΕ(k=0,h-1)2k次方-2Ε(k=1,h-1)2k次方

=2(n-log2(n+1))<2n,n>0

27.三种贪婪策略解决01背包的过程和结果

价值最大:满足约束条件下,每次装入价值最大的物品----不一定能找到最优解(背包称重量消耗过快)

重量最小:满足约束条件下,每次装入重量最轻的物品---不一定找到最优解(装入总价值增加太慢)

单位价值最大:满足约束条件下,每次装入价值/重量最大的物品---能找到最优解

28.连续背包的贪婪算法

GreedyKnapsack(n,w[1..n],v[1..n],x[1..n],W,V)

X[1..n] ←0 Wo←W V←0

MergeSort(v[1..n]/w[1..n])

For(i←1 to n)do

If(w[i]

Wo←Wo←w[i]

V←V+v[i]

Else x[i]←Wo/w[i], V←V+x[i]*v[i]

Break

Return V

29.贪婪算法

Prim算法:

PrimMST(G)

Vt←{vo}

Et←Φ

For(i←1 to|V|-1)do

在V-Vt中选与当前树最小距离的边e*=(v*,u*)

Vt←Vt∪{u*}

Et←Et∪{e*}

Return Et

Dijkstra算法伪码:

Dijkstre(G,s)

Initialize(Q)

For(each vertex v∈V)

dv←∞

Isert (Q,v,dv)

ds←0,Decrease(Q,s,ds)

Vt←Φ

For(i←0 to |V|-1)

U*←DeleteMin(Q)

Vt←Vt∪{u*}

For(each vertex u∈(V-Vt)adjacent to u*∈Vt)

If(dn*+w(u*,u)

du←du*+w(u*,u)

Decrease(Q,u,dn)

Kruskal算法:

Kruskal(G)

Et←?;ecounter←0

k←0

while ecounter<|V|-1 do

k←k+1

if Et∪{Eik}无回路

ET←Et∪{Eik};ecounter←ecounter+1

Return Et

a.设计一个蛮力算法,对于给定的x0,计算下面多项式的值:

P(x)=a n x n+a n-1x n-1+…+a1x+a0

并确定该算法的最差效率类型.

b.如果你设计的算法属于Θ(n2),请你为该算法设计一个线性的算法.

中科院陈玉福计算机算法设计与分析期末简答题答案

1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法,均有局部最优解来推导全局最优解 区别:贪心算法中,作出的每步贪心决策都无法改变,每一步的最优解一定包含上一步的 最优解,而上一部之前的最优解则不作保留。 动态优化算法,全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解 动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项式时间,从而获得较高的解题效率。但它需要计算之前所有情况花费,更加耗费空间。 贪心算法所作的选择依赖于以往所作过的选择,但决不依赖于将来的选择,这使得算法在编 码和执行过程中都有一定的速度优势。贪心算法是只是找局部最优解,不一定是全局最优解。 2. 试比较回溯法与分枝限界算法,分别谈谈这两个算法比较适合的问题? 二者都是在解空间树里搜索问题的可靠解或最优解,但是搜索的方式不同,回溯法采用深 度优先的方式,直到达到问题的一个可行解,或经判断沿此路径不会达到问题的可行解或最优解时,停止向前搜索,并沿原路返回到该路径上最后一个还可扩展的节点,然后,从该节点出发朝新的方向纵深搜索。分枝限界法采用的是宽度优先的方式,它将活节点存放在一个特殊的表中,其策略是,在扩展节点处,首先生成其所有的儿子节点,将那些导致不可行解或导致非最优解的儿子节点舍弃,其余儿子节点加入活节点表中,然后,从活节点中取出一个节点作为当前扩展节点,重复上述节点中扩展过程。可以看出,回溯法一般用于求问题的一个可行解,而分枝限界可以用于求出问题的所有可行解。 3. 何谓最优化原理?采用动态规划算法必须满足的条件是什么?动态规划算法是通过什 么问题的什么特性提高效率的? 一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构性质。最优子结构性质,子问题重叠性质是计算模型采用动态规划算法求解的两个基本要素。 动态规划算法利用子问题重叠性质,对每一个子问题只计算一次,将其解保存在一个表格中。不同的子问题个数随着输入问题的规模呈多项式增长,因此,动态规划算法通常只需要多项式时间,从而获得较高的解题效率 4. 什么是多项式时间算法? 若存在一个常数C,使得对于所有n>=0,都有|f(n)| <= C*|g(n)|,则称函数f(n)是O(g(n))。时间复杂度是O(p(n))的算法称为多项式时间算法,这里p(n)是关于n的多项式。 时间复杂度为O(nlog(n))、O(n^3)的算法都是多项式时间算法,时间复杂度为O(n^log(n))、O(n!)、O(2^n)的算法是指数时间算法。 一个优化问题如果已经找到了多项式时间算法,则称该问题为多项式时间可解问题,并 将这类问题的集合记为P,因此多项式时间可解问题就称为P类问题。。

考研数据结构必须掌握的知识点与算法-打印版

《数据结构》必须掌握的知识点与算法 第一章绪论 1、算法的五个重要特性(有穷性、确定性、可行性、输入、输出) 2、算法设计的要求(正确性、可读性、健壮性、效率与低存储量需求) 3、算法与程序的关系: (1)一个程序不一定满足有穷性。例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。 (2)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。 (3)一个算法若用程序设计语言来描述,则它就是一个程序。 4、算法的时间复杂度的表示与计算(这个比较复杂,具体看算法本身,一般关心其循环的次数与N的关系、函数递归的计算) 第二章线性表 1、线性表的特点: (1)存在唯一的第一个元素;(这一点决定了图不是线性表) (2)存在唯一的最后一个元素; (3)除第一个元素外,其它均只有一个前驱(这一点决定了树不是线性表) (4)除最后一个元素外,其它均只有一个后继。 2、线性表有两种表示:顺序表示(数组)、链式表示(链表),栈、队列都是线性表,他们都可以用数组、链表来实现。 3、顺序表示的线性表(数组)地址计算方法: (1)一维数组,设DataType a[N]的首地址为A0,每一个数据(DataType类型)占m个字节,则a[k]的地址为:A a[k]=A0+m*k(其直接意义就是求在数据a[k]的前面有多少个元素,每个元素占m个字节) (2)多维数组,以三维数组为例,设DataType a[M][N][P]的首地址为A000,每一个数据(DataType 类型)占m个字节,则在元素a[i][j][k]的前面共有元素个数为:M*N*i+N*j+k,其其地址为: A a[i][j][k]=A000+m*(M*N*i+N*j+k); 4、线性表的归并排序: 设两个线性表均已经按非递减顺序排好序,现要将两者合并为一个线性表,并仍然接非递减顺序。可见算法2.2 5、掌握线性表的顺序表示法定义代码,各元素的含义; 6、顺序线性表的初始化过程,可见算法2.3 7、顺序线性表的元素的查找。 8、顺序线性表的元素的插入算法,注意其对于当原来的存储空间满了后,追加存储空间(就是每次增加若干个空间,一般为10个)的处理过程,可见算法2.4 9、顺序线性表的删除元素过程,可见算法2.5 10、顺序线性表的归并算法,可见算法2.7 11、链表的定义代码,各元素的含义,并能用图形象地表示出来,以利分析; 12、链表中元素的查找 13、链表的元素插入,算法与图解,可见算法2.9 14、链表的元素的删除,算法与图解,可见算法2.10 15、链表的创建过程,算法与图解,注意,链表有两种(向表头生长、向表尾生长,分别用在栈、队列中),但他们的区别就是在创建时就产生了,可见算法2.11 16、链表的归并算法,可见算法2.12 17、建议了解所谓的静态单链表(即用数组的形式来实现链表的操作),可见算法2.13 18、循环链表的定义,意义 19、循环链表的构造算法(其与单链表的区别是在创建时确定的)、图解

算法设计与分析考试题及答案

算法设计与分析考试题 及答案 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

一、填空题(20分) 1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性 有穷性 可行性 0个或多个输入 一个或多个输出 2.算法的复杂性有时间复杂性 空间复杂性之分,衡量一个算法好坏的标准是 时间复杂度高低 3.某一问题可用动态规划算法求解的显着特征是 该问题具有最优子结构性质 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y 的一个最长公共子序列{BABCD}或{CABCD}或{CADCD } 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解 6.动态规划算法的基本思想是将待求解问题分解成若干_子问题 ,先求解_子问题 ,然后从这些子问题 的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为回溯法 背包问题的回溯算法所需的计算时间为o(n*2n ) ,用动态规划算法所需的计算时间为o(min{nc,2n }) 9.动态规划算法的两个基本要素是最优子结构 _和重叠子问题 10.二分搜索算法是利用动态规划法实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 ①问题具有最优子结构性质;②构造最优值的递归关系表达式; ③最优值的算法描述;④构造最优解; 2. 流水作业调度问题的johnson 算法的思想。 ①令N 1={i|a i =b i };②将N 1中作业按a i 的非减序排序得到N 1’,将N 2中作业按b i 的非增序排序得到N 2’;③N 1’中作业接N 2’中作业就构成了满足Johnson 法则的最优调度。 3. 若n=4,在机器M1和M2上加工作业i 所需的时间分别为a i 和b i ,且 (a 1,a 2,a 3,a 4)=(4,5,12,10),(b 1,b 2,b 3,b 4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。 步骤为:N1={1,3},N2={2,4}; N 1’={1,3}, N 2’={4,2}; 最优值为:38 4. 使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。 解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1), (1,1,0),(1,1,1)}。 解空间树为: 该问题的最优值为:16 最优解为:(1,1,0) 5. 设S={X 1,X 2,···,X n }是严格递增的有序集,利用二叉树的结点来存储S 中的元素,在表示S 的二叉搜索树中搜索一个元素X ,返回的结果有两种情形,(1)在二叉搜索树的内结点中找到X=X i ,其概率为b i 。(2)在二叉搜索树的叶结点中确定X ∈(X i ,X i+1),其概率为a i 。在表示S 的二叉搜索树T 中,设存储元素X i 的结点深度为C i ;叶结点(X i ,X i+1)的结点深度为d i ,则二叉搜索树T 的平均路长p 为多少假设二叉搜索树T[i][j]={X i ,X i+1,···,X j }最优值为m[i][j],W[i][j]= a i-1+b i +···+b j +a j ,则m[i][j](1<=i<=j<=n)递归关系表达式为什么 .二叉树T 的平均路长P=∑=+n i 1 Ci)(1*bi +∑=n j 0 dj *aj

算法设计与分析试卷(2010)

算法设计与分析试卷(A 卷) 一、 选择题 ( 选择1-4个正确的答案, 每题2分,共20分) (1)计算机算法的正确描述是: B 、D A .一个算法是求特定问题的运算序列。 B .算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。 C .算法是一个对任一有效输入能够停机的图灵机。 D .一个算法,它是满足5 个特性的程序,这5个特性是:有限性、确定性、能 行性、有0个或多个输入且有1个或多个输出。 (2)影响程序执行时间的因素有哪些? C 、D A .算法设计的策略 B .问题的规模 C .编译程序产生的机器代码质量 D .计算机执行指令的速度 (3)用数量级形式表示的算法执行时间称为算法的 A A .时间复杂度 B .空间复杂度 C .处理器复杂度 D .通信复杂度 (4)时间复杂性为多项式界的算法有: A .快速排序算法 B .n-后问题 C .计算π值 D .prim 算法 (5)对于并行算法与串行算法的关系,正确的理解是: A .高效的串行算法不一定是能导出高效的并行算法 B .高效的串行算法不一定隐含并行性 C .串行算法经适当的改造有些可以变化成并行算法 D. 用串行方法设计和实现的并行算法未必有效 (6)衡量近似算法性能的重要标准有: A A .算法复杂度 B .问题复杂度 C .解的最优近似度 D .算法的策略 (7)分治法的适用条件是,所解决的问题一般具有这些特征: ABCD A .该问题的规模缩小到一定的程度就可以容易地解决; B .该问题可以分解为若干个规模较小的相同问题; C .利用该问题分解出的子问题的解可以合并为该问题的解 D .该问题所分解出的各个子问题是相互独立的。 (8)具有最优子结构的算法有: A .概率算法 B .回溯法 C .分支限界法 D .动态规划法 (9)下列哪些问题是典型的NP 完全问题: A .排序问题 B .n-后问题 C .m-着色问题 D .旅行商问题 (10)适于递归实现的算法有: C A .并行算法 B .近似算法 C .分治法 D .回溯法 二、算法分析题(每小题5分,共10分) (11)用展开法求解递推关系: (12)分析当输入数据已经有序时快速排序算法的不足,提出算法的改进方案。 ???>+-==1 1)1(211)(n n T n n T

最新算法设计与分析复习要点(1)

算法设计与分析的复习要点 第一章:算法问题求解基础 算法是对特定问题求解步骤的一种描述,它是指令的有限序列。 一.算法的五个特征: 1.输入:算法有零个或多个输入量; 2.输出:算法至少产生一个输出量; 3.确定性:算法的每一条指令都有确切的定义,没有二义性; 4.可行性:算法的每一条指令必须足够基本,它们可以通过已经实现的基本运算执行有限次来实现; 5.有穷性:算法必须总能在执行有限步之后终止。 二.什么是算法?程序与算法的区别 1.笼统地说,算法是求解一类问题的任意一种特殊的方法;较严格地说,算法是对特定问题求解步骤的一种描述,它是指令的有限序列。 2.程序是算法用某种程序设计语言的具体实现;算法必须可终止,程序却没有这一限制;即:程序可以不满足算法的第5个性质“有穷性”。 三.一个问题求解过程包括:理解问题、设计方案、实现方案、回顾复查。 四.系统生命周期或软件生命周期分为: 开发期:分析、设计、编码、测试;运行期:维护。 五.算法描述方法:自然语言、流程图、伪代码、程序设计语言等。 六.算法分析:是指对算法的执行时间和所需空间的估算。算法的效率通过算法分析来确定。 七.递归定义:是一种直接或间接引用自身的定义方法。一个合法的递归定义包括两部分:基础情况和递归部分; 基础情况:以直接形式明确列举新事物的若干简单对象; 递归部分:有简单或较简单对象定义新对象的条件和方法 八.常见的程序正确性证明方法: 1.归纳法:由基础情况和归纳步骤组成。归纳法是证明递归算法正确性和进行算法分析的强有力工具; 2.反证法。 第二章:算法分析基础 一.会计算程序步的执行次数(如书中例题程序2-1,2-2,2-3的总程序步数的计算)。二.会证明5个渐近记法。(如书中P22-25例2-1至例2-9) 三.会计算递推式的显式。(迭代法、代换法,主方法) 四.会用主定理求T(n)=aT(n/b)+f(n)。(主定理见P29,如例2-15至例2-18)五.一个好的算法应具备的4个重要特征: 1.正确性:算法的执行结果应当满足预先规定的功能和性能要求; 2.简明性:算法应思路清晰、层次分明、容易理解、利于编码和调试; 3.效率:算法应有效使用存储空间,并具有高的时间效率; 4.最优性:算法的执行时间已达到求解该类问题所需时间的下界。 六.影响程序运行时间的主要因素: 1.程序所依赖的算法; 2.问题规模和输入数据规模; 3.计算机系统性能。 七.1.算法的时间复杂度:是指算法运行所需的时间;

计算机算法设计与分析期末考试复习题

1、二分搜索算法是利用( A )实现的算法。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 2、下列不是动态规划算法基本步骤的是( A )。 A、找出最优解的性质 B、构造最优解 C、算出最优解 D、定义最优解 3、最大效益优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 4、最长公共子序列算法利用的算法是( B )。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 5. 回溯法解TSP问题时的解空间树是( A )。 A、子集树 B、排列树 C、深度优先生成树 D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 7、衡量一个算法好坏的标准是(C )。 A 运行速度快 B 占用空间少 C 时间复杂度低 D 代码短 8、以下不可以使用分治法求解的是(D )。 A 棋盘覆盖问题 B 选择问题 C 归并排序 D 0/1背包问题 9. 实现循环赛日程表利用的算法是( A )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法 10、实现最长公共子序列利用的算法是( B )。 A、分治策略 B、动态规划法 C、贪心法 D、回溯法11.下面不是分支界限法搜索方式的是( D )。 A、广度优先 B、最小耗费优先 C、最大效益优先 D、深度优先 12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。 A、备忘录法 B、动态规划法 C、贪心法 D、回溯法 13. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。 A、重叠子问题 B、最优子结构性质 C、贪心选择性质 D、定义最优解14.广度优先是( A )的一搜索方式。 A、分支界限法 B、动态规划法 C、贪心法 D、回溯法 15.背包问题的贪心算法所需的计算时间为( B )。

算法设计与分析考试题及答案

1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。 2.算法的复杂性有_____________和___________之分,衡量一个算法 好坏的标准是______________________。 3.某一问题可用动态规划算法求解的显著特征是 ____________________________________。 4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。 6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。 7.以深度优先方式系统搜索问题解的算法称为_____________。 8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。 9.动态规划算法的两个基本要素是___________和___________。 10.二分搜索算法是利用_______________实现的算法。 二、综合题(50分) 1.写出设计动态规划算法的主要步骤。 2.流水作业调度问题的johnson算法的思想。

算法设计与分析复习要点

·算法是指解决问题的方法和过程。算法是由若干条指令组成的有穷序列。 ·算法特性:输入、输出、确定性、有限性(执行时间和执行次数)(有五个空再加上可行性)。 ·程序是算法用某种程序设计语言的具体实现,程序可不满足有限性的特性。 ·程序调试只能证明程序有错,不能证明程序无错误! ·算法复杂性= 算法所需要的计算机资源。 ·算法的复杂性取决于:(1)求解问题的规模N;(2)具体的输入数据I;(3)算法本身的设计A。·可操作性最好且最有实际价值的是最坏情况下的时间复杂性。 第二章递归与分治策略 二分搜索技术:O(logn)大整数乘法:O(n log3)=O(n1.59)Strassen矩阵乘法:O(n log7)=O(n2.81) 棋盘覆盖:O(4k)合并排序和快排:O(nlogn)线性时间选择:O(n) 最接近点对问题:O(nlogn) 循环赛日程表:O(n2) ·分治法思想:将一个难以解决的问题分割成一些规模较小的相同问题,以便逐个击破,分而治之。边界条件与递归方程是递归函数的两大要素。 递归优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。 ·分治法时间复杂度分析:T(n)<= O(1) n=n0 aT(n/b)+f(n) n>n0 若递归方式为减法:T(n) = O(a n) 若递归方式为除法: f(n)为合并为原问题的开销:f(n)为常数c时:T(n)=O(n p) f(n)为线性函数:O(n) ab,p=log b a f(n)为幂函数n x时:O(n x) af(b),p=log b a ·证明算法的正确性:部分正确性、终止性。 第三章:动态规划 ·当前决策的最优性取决于其后续决策序列的是否最优。动态规划方法可以保证问题求解是全局最优的。

算法设计与分析试卷及答案

湖南科技学院二○年学期期末考试 信息与计算科学专业年级《算法设计与分析》试题 考试类型:开卷试卷类型:C卷考试时量:120分钟 题号一二三四五总分统分人 得分 阅卷人 复查人 一、填空题(每小题3 分,共计30 分) 1、用O、Ω与θ表示函数f与g之间得关系______________________________。 2、算法得时间复杂性为,则算法得时间复杂性得阶为__________________________。 3、快速排序算法得性能取决于______________________________。 4、算法就是_______________________________________________________。 5、在对问题得解空间树进行搜索得方法中,一个活结点最多有一次机会成为活结点得就是_________________________。 6、在算法得三种情况下得复杂性中,可操作性最好且最有实际价值得就是_____情况下得时间复杂性。 7、大Ω符号用来描述增长率得下限,这个下限得阶越___________,结果就越有价值。。 8、____________________________就是问题能用动态规划算法求解得前提。 9、贪心选择性质就是指____________________________________________________________________________________________________________________。 10、回溯法在问题得解空间树中,按______________策略,从根结点出发搜索解空间树。 二、简答题(每小题10分,共计30分) 1、试述回溯法得基本思想及用回溯法解题得步骤。 2、有8个作业{1,2,…,8}要在由2台机器M1与M2组成得流水线上完成加工。每个作业加工得顺序都就是先在M1上加工,然后在M2上加工。M1与M2加工作业i所需得时间分别为: M110 2 8 12 6 9414

算法设计与分析期末试题答案解析

1、用计算机求解问题的步骤: 1、问题分析 2、数学模型建立 3、算法设计与选择 4、算法指标 5、算法分析 6、算法实现 7、程序调试 8、结果整理文档编制 2、算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程 3、算法的三要素 1、操作 2、控制结构 3、数据结构 算法具有以下5个属性: 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。 确定性:算法中每一条指令必须有确切的含义。不存在二义性。只有一个入口和一个出口 可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。 输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。 输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。 算法设计的质量指标: 正确性:算法应满足具体问题的需求; 可读性:算法应该好读,以有利于读者对程序的理解;

健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。 效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般这两者与问题的规模有关。 经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法 迭代法 基本思想:迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。 解题步骤:1、确定迭代模型。根据问题描述,分析得出前一个(或几个)值与其下一个值的迭代关系数学模型。 2、建立迭代关系式。迭代关系式就是一个直接或间接地不断由旧值递推出新值的表达式,存储新值的变量称为迭代变量 3、对迭代过程进行控制。确定在什么时候结束迭代过程,这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一

算法分析与设计知识点总结

第一章概述 算法的概念:算法是指解决问题的一种方法或过程,是由若干条指令组成的有穷序列。 算法的特征: 可终止性:算法必须在有限时间内终止; 正确性:算法必须正确描述问题的求解过程; 可行性:算法必须是可实施的; 算法可以有0个或0个以上的输入; 算法必须有1个或1个以上的输出。 算法与程序的关系: 区别:程序可以不一定满足可终止性。但算法必须在有限时间内结束; 程序可以没有输出,而算法则必须有输出; 算法是面向问题求解的过程描述,程序则是算法的实现。 联系:程序是算法用某种程序设计语言的具体实现; 程序可以不满足算法的有限性性质。 算法描述方式:自然语言,流程图,伪代码,高级语言。 算法复杂性分析: 算法复杂性的高低体现运行该算法所需计算机资源(时间,空间)的多少。 算法复杂性度量: 期望反映算法本身性能,与环境无关。 理论上不能用算法在机器上真正的运行开销作为标准(硬件性能、代码质量影响)。 一般是针对问题选择基本运算和基本存储单位,用算法针对基本运算与基本存储单位的开销作为标准。 算法复杂性C依赖于问题规模N、算法输入I和算法本身A。即C=F(N, I, A)。 第二章递归与分治 分治法的基本思想: 求解问题算法的复杂性一般都与问题规模相关,问题规模越小越容易处理。 分治法的基本思想是,将一个难以直接解决的大问题,分解为规模较小的相同子问题,直至这些子问题容易直接求解,并且可以利用这些子问题的解求出原问题的解。各个击破,分而治之。 分治法产生的子问题一般是原问题的较小模式,这就为使用递归技术提供了方便。递归是分治法中最常用的技术。 使子问题规模大致相等的做法是出自一种平衡(balancing)子问题的思想,它几乎总是比子问题规模不等的做法要好。 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地解决; 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; 利用该问题分解出的子问题的解可以合并为该问题的解; 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。(这条特征涉及到分治法的效率,如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然也可用分治法,但一般用动态规划较好。) 递归的概念:

算法设计与分析课程期末试卷-A卷(自测 )

华南农业大学期末考试试卷(A卷) 2008学年第一学期考试科目:算法分析与设计 考试类型:(闭卷)考试时间:120分钟 学号姓名年级专业 一、选择题(20分,每题2分) 1.下述表达不正确的是。 A.n2/2 + 2n的渐进表达式上界函数是O(2n) B.n2/2 + 2n的渐进表达式下界函数是Ω(2n) C.logn3的渐进表达式上界函数是O(logn) D.logn3的渐进表达式下界函数是Ω(n3) 2.当输入规模为n时,算法增长率最大的是。 A.5n B.20log2n C.2n2D.3nlog3n 3.T(n)表示当输入规模为n时的算法效率,以下算法效率最优的是。A.T(n)= T(n – 1)+1,T(1)=1 B.T(n)= 2n2 C.T(n)= T(n/2)+1,T(1)=1 D.T(n)= 3nlog2n 4.在棋盘覆盖问题中,对于2k×2k的特殊棋盘(有一个特殊方块),所需的L型骨 牌的个数是。 A.(4k– 1)/3 B.2k /3 C.4k D.2k 5.在寻找n个元素中第k小元素问题中,若使用快速排序算法思想,运用分治算法 对n个元素进行划分,应如何选择划分基准?下面答案解释最合理。A.随机选择一个元素作为划分基准 B.取子序列的第一个元素作为划分基准 C.用中位数的中位数方法寻找划分基准 D.以上皆可行。但不同方法,算法复杂度上界可能不同

6. 现在要盖一所邮局为这9个村庄服务,请问邮局应该盖在 才能使到邮局到这9个村庄的总距离和最短。 A .(4.5,0) B .(4.5,4.5) C .(5,5) D .(5,0) 7. n 个人拎着水桶在一个水龙头前面排队打水,水桶有大有小,水桶必须打满水, 水流恒定。如下 说法不正确? A .让水桶大的人先打水,可以使得每个人排队时间之和最小 B .让水桶小的人先打水,可以使得每个人排队时间之和最小 C .让水桶小的人先打水,在某个确定的时间t 内,可以让尽可能多的人打上水 D .若要在尽可能短的时间内,n 个人都打完水,按照什么顺序其实都一样 8. 分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分 别解决子问题,最后将子问题的解组合起来形成原问题的解。这要求原问题和子问题 。 A .问题规模相同,问题性质相同 B .问题规模相同,问题性质不同 C .问题规模不同,问题性质相同 D .问题规模不同,问题性质不同 9. 对布线问题,以下 是不正确描述。 A .布线问题的解空间是一个图 B .可以对方格阵列四周设置围墙,即增设标记的附加方格的预处理,使得算法简化对边界的判定 C .采用广度优先的标号法找到从起点到终点的布线方案(这个方案如果存在的话)不一定是最短的 D .采用先入先出的队列作为活结点表,以终点b 为扩展结点或活结点队列为空作为算法结束条件 10. 对于含有n 个元素的子集树问题,最坏情况下其解空间的叶结点数目为 。 A .n! B .2n C .2n+1-1 D . ∑=n i i n 1 !/! 答案:DACAD CACCB

算法设计与分析试卷及答案.doc

湖南科技学院二○ 年 学期期末考试 信息与计算科学专业 年级《算法设计与分析》 试题 考试类型:开卷 试卷类型: C 卷 考试时量: 120 分钟 题号 一 二 三 四 五 总分 统分人 得 分 阅卷人 一、填空题(每小题 3 分,共计 30 分) 1. 用 O 、Ω和θ表示函数 f 与 g 之间的关系 ______________________________ 。 f n n lo g n g n log n 1, n 1 2. 算法的时间复杂性为 f (n) n ,则算法的时间复杂性的阶 8 f (3n / 7) n, 2 为__________________________ 。 3. 快速排序算法的性能取决于 ______________________________ 。 4. 算法是 _______________________________________________________ 。 5. 在对问题的解空间树进行搜索的方法中,一个活结点最多有一次机会成为活结点的 是_________________________ 。 6. 在算法的三种情况下的复杂性中, 可操作性最好且最有实际价值的是 _____情况下的时间复杂性。 7. 大Ω符号用来描述增长率的下限,这个下限的阶越 ___________,结果就越有价值。 。 8. ____________________________ 是问题能用动态规划算法求解的前提。 9. 贪心选择性质是指 ________________________________________________________ ____________________________________________________________ 。

大数据结构与算法设计知识点

数据结构与算法设计知识点 试题类型: 本课程为考试科目(闭卷笔试),试题类型包括:概念填空题(10 %),是非判断题(10 %),单项选择题(40 %),算法填空题(10%),算法应用题(20 %),算法设计题(10 %)。 第一章绪论 重点容及要求: 1、了解与数据结构相关的概念(集合、数据、数据元素、数据项、关键字、元 素之间的关系等)。 数据:所有能被输入到计算机中,且能被计算机处理的符号的 集合。是计算机操作的对象的总称。是计算机处理的信息的某种特定 的符号表示形式。 数据元素:是数据(集合)中的一个“个体”,数据结构中的基 本单位,在计算机程序常作为一个整体来考虑和处理。 数据项:是数据结构中讨论的最小单位,数据元素可以是一个或 多个数据项的组合 关键码:也叫关键字(Key),是数据元素中能起标识作用的数据 项。 其中能起到唯一标识作用的关键码称为主关键码(简称主码); 否则称为次关键码。通常,一个数据元素只有一个主码,但可以有多 个次码。 关系:指一个数据集合中数据元素之间的某种相关性。 数据结构:带“结构”的数据元素的集合。这里的结构指元素之 间存在的关系。 数据类型:是一个值的集合和定义在此集合上的一组操作的总

称。 2、掌握数据结构的基本概念、数据的逻辑结构(四种)和物理结构(数据元素 的表示与关系的表示、两类存储结构:顺序存储结构和链式存储结构)。 数据结构包括逻辑结构和物理结构两个层次。 数据的逻辑结构:是对数据元素之间存在的逻辑关系的一种抽象的描述,可以用一个数据元素的集合和定义在此集合上的若干关系来表示 逻辑结构有四种:线性结构、树形结构、图状结构、集合结构数据的物理结构:是其逻辑结构在计算机中的表示或实现,因此又称其为存储结构。 存储结构:顺序存储结构和链式存储结构 顺序存储结构:利用数据元素在存储器中相对位置之间的某种特定的关系来表示数据元素之间的逻辑关系; 链式存储结构:除数据元素本身外,采用附加的“指针”表示数据元素之间的逻辑关系。 3、了解算法分析的基本方法,掌握算法时间复杂度相关的概念。 算法:是为了解决某类问题而规定的一个有限长的操作序列 或处理问题的策略 一个算法必须满足以下五个重要特性:1.有穷性2.确定性3.可行性4.有输入 5.有输出 设计算法时,通常还应考虑满足以下目标: 1.正确性, 2.可读性, 3.健壮性 4.高效率与低存储量需求

《算法设计与分析》复习题(汇编)

填空 1.直接或间接地调用自身的算法称为 递归 。 2.算法的复杂性是 算法效率 的度量,是评价算法优劣的重要依据。 3.以广度优先或以最小耗费方式搜索问题解的算法称为 分支限界法 。 4.回溯法解题的显著特点是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为 o(h(n)) 。 5.人们通常将问题的解决方案分为两大类:一类是可以通过执行若干个步骤就能得出问题 6.算法就是一组有穷的 规则 ,它们规定了解决某一特定类型问题的 一系列运算 。 7.在进行问题的计算复杂性分析之前,首先必须建立求解问题所用的计算模型。3个基本计算模型是 随机存取机、 随机存取存储程序机 、 图灵机 。 8.快速排序算法的性能取决于 划分的对称性 。 9.计算机的资源最重要的是 内存 和 运算 资源。因而,算法的复杂性有时间 和 空间 之分。 10.贪心算法总是做出在当前看来 最优 的选择。也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的 局部最优解 。 11.许多可以用贪心算法求解的问题一般具有2个重要的性质: 最优子结构的 性质和 贪心选择的 性质。 12.常见的两种分支限界法为 队列式 和 优先队列式 。 13.解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中需要排序的是 回溯法 ,不需要排序的是 动态规划和分支限界法 。 14.f ( n ) = 6 × 2n + n 2,f(n)的渐进性态f ( n ) = O ( 2^n )。 15.对于含有n 个元素的排列树问题,最好情况下计算时间复杂性为 ,最坏情况下计算时间复杂性为 n! 。 16.在忽略常数因子的情况下,O 、Ω和Θ三个符号中, Θ 提供了算法运行时间的一个上界。 17.回溯法的求解过程,即在问题的解空间树中,按 深度优先 策略从根结点出发搜索解空间树。 18.分支限界法的求解过程,即在问题的解空间树中,按 广度优先 策略从根结点出发搜索解空间树。 19.多项式10()m m A n a n a n a =+ ++的上界为 2^n 。 20.用分支限界法解布线问题时,对空间树搜索结束的标志是 活结点表为空 。 21.使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N 皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进

算法设计与分析报告期末备考知识点总结材料

●通俗地讲,算法是解决问题的方法,严格地说,算法是对特定问题求解步骤的一种描述, 是指令的有限序列。 ●算法还必须满足一下五个重要特性:输入、输出、有穷性、确定性、可行性。 ●程序(Program)是对一个算法使用某种程序设计语言的具体实现,原则上,算法可以 用任何一种程序设计语言来实现。 什么是算法的计算复杂性? ●算法分析指的是对算法所需要的两种计算机资源——时间和空间(时间复杂性和空间复 杂性进行估算,所需要的资源越多,该算法的复杂性就越高。 ●表示计算复杂性的O你掌握了? 若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n))(或称算法在O(f(n))中)。 我们主要介绍了哪几种算法设计方法? 分治法:将一个难以直接解决的大问题,分割成一些规模较小的子问题,以便各个击破,分而治之。 减治法:减治法在将原问题分解为若干个子问题后,利用了规模为n的原问题的解与较小规模(通常是n/2)的子问题的解之间的关系,这种关系通常表现为: (1)原问题的解只存在于其中一个较小规模的子问题中; (2)原问题的解与其中一个较小规模的解之间存在某种对应关系。 由于原问题的解与较小规模的子问题的解之间存在这种关系,所以,只需求解其中 一个较小规模的子问题就可以得到原问题的解。 动态规划法、贪心算法、回溯算法、概率 RAM程序 分治法------合并排序

设算法4.3对n个元素排序的时间复杂性为T(n),则该二路归并排序算法存在如下递推式: 二路归并排序的时间代价是O(nlog2n)。 所需空间只要O(m+n+min(m, n))的空间就够了(假设两个合并串的长度分别为m和n)。 分治法------快速排序

算法题__计算机算法设计与分析期末试题4套(含答案)

(1)用计算机求解问题的步骤: 1、问题分析 2、数学模型建立 3、算法设计与选择 4、算法指标 5、算法分析 6、算法实现 7、程序调试 8、结果整理文档编制 (2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程 (3)算法的三要素 1、操作 2、控制结构 3、数据结构 算法具有以下5个属性: 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。 确定性:算法中每一条指令必须有确切的含义。不存在二义性。只有一个入口和一个出口 可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。 输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。 输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。 算法设计的质量指标: 正确性:算法应满足具体问题的需求; 可读性:算法应该好读,以有利于读者对程序的理解;

健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。 效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般这两者与问题的规模有关。 经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法 迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。 利用迭代算法解决问题,需要做好以下三个方面的工作: 一、确定迭代模型。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。 二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。 三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一

算法程序设计知识点汇总

算法与程序设计知识点汇总 第一章 计算机解决问题的基本过程 一、开始 分析问题 设计算法 编写程序 调试、运行程序 问题解决 二、算法-----程序设计的“灵魂 ” 1、定义:就是解决问题的方法和步骤 2 1、确定性:每一步都有确切的含义 2、有穷性:执行的步骤和每一步执行的时间都是有限的 3、输入:有零个或多个输入 4、输出:至少产生一个输出 5、可行性:原则上可精确运行 3、算法的描述:1、自然语言 2、流程图(P11) 3、伪代码(p12) 4、计算机语言 三:程序设计语言的发展: 须经过转换处理。 高级语言:更接近于自然语言(英语)和数学语言的编程语言,容易掌握和使用,也不能直接识别,必须经过转换才能被计算机执行。 第二章 一、visiual basic 可视化程序开发工具,主要是让程序设计人员利用软件本身所提供的各种控件,像搭积木一样构造应用程序的各种界面,然后再编写少量的代码就可以构建应用程序,提供了程序设计,编辑,调试,运行于一体的集成开发环境。 二、VB6.0的集成开发环境 三个工作栏: 标题栏 菜单栏 工具栏 六个基本窗口: 主窗口(main) 窗体窗口(form) 工具箱窗口(toolbox) 工程窗口(project) 属性窗口(properties) 窗体布局窗口(formlayout) 三、属性---用来描述对象的外部特征 四、常用控件 熟悉常用控件(标签、文本框、命令按钮)的作用,图标及其属性 五、数据的表示与处理 1、Vb 数据类型

2、常量与变量的说明: 常量说明:Const a=3.14 const a as single=3.14 变量说明: Dim a As integer Dim b As integer Dim a,b As integer 3、运算符 (1) 算术运算符 (2)字符串运算符 &、+字符串连接 " 123 " + " 456 "结果 " 123456 " " 123 " & " 456 " 结果 " 123456 " 区别: + 两边必须是字符串, & 不一定 例如: "abcdef" & 12345 ' 结果为 "abcdef12345 " "abcdef " + 12345 ' 出错 "123" & 456 ' 结果为" 123456 " “123” + 456 ' 结果为 579 注意: "123 " + True'结果为 122 True转换为数值-1,False转换为数值0 (3)关系运算符 a、将两个操作数进行大小比较,结果为逻辑量。如:3>2结果为True。 b、字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止.。 例: " ABCDE " > " ABRA " 结果为 False 注释:A—Z的ASCII码值为65—90; a—z的ASCII码值为97—122;(选修教材124页)

相关文档
最新文档