算法分析与设计习题集整理.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法分析与设计习题集整理

第一章算法引论

一、填空题:

1、算法运行所需要的计算机资源的量,称为算法复杂性,主耍包括时间复杂度和空间复杂度。

2、多项式A{n) = a m n m+…+ a/ + q的上界为O(rT)。

3、算法的基本特征:输入、输出、确定性、有限性。

4、如何从两个方面评价一个算法的优劣:时间复杂度、空间复杂度。

5、计算下面算法的时间复杂度记为:0(n3) 0

for(i=l;i<=n;i++)

for(j=l;j<=n;j++)

{c[i][j]二 0;

for (k二1;k〈=n;k++)

c[i][j]= c[i][j]+a[i][k]*b[k][j];

}

6、描述算法常川的方法:自然语言、伪代码、程序设计语言、流程图、盒图、PAD图。

7、算法设计的基本要求:正确性和H J读性。

8、计算下面算法的时间复杂度记为:0(/)。

for (i = l; i

{ y=y+l;

for (j=0; j <=2n; j++ )

x + + ;

}

9、计算机求解问题的步骤:问题分析、数学模型建立、算法设计与选择、算法表示、算法分析、算法实现、程序调试、结果整理文档编制。

10、算法是指解决问题的方法或过程。

11、算法由操作、控制结构、数据结构三要素组成。

二、简答题:

1、按照时间复杂度从低到高排列:0(4i?)、0(logn)、0(3")、0(20n)、0(2)、0( n2/3),

0( n!)应该排在哪一位?

答:0( 2), 0( logn), 0( n2/3), 0( 20n), 0( 4n2), 0( 3n), 0( n!)

2、什么是算法?算法的特征有哪些?

答:1) 法:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。

通俗讲,算法:就是解决问题的方法或过程。

2)特征:1)算法有零个或多个输入;2)算法有一个或多个输岀;3)确定性;4)有穷性

3、给出算法的定义?何谓算法的复杂性?

计算下例在最坏情况下的时间复杂性?

for(j=l;j<=n;j++) (1)

for(i=l;i<=n;i++) (2)

(c[i][j]=O; ⑶

for(k=l;k<=n;k++) (4)

c[i][j]= c[i][j]+a[i][k]*b[k][j];

} (5)

答:1)定义:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。

2) 算法的复杂性:指的是算法在运行过程中所需要的资源(时间、空间)多少。所需 资源越多,表明算法的复杂性越高

3) 该算法的主要元操作是语句5,其执行次数是r?次。 故该算法的时间复杂度记

为0 (n 8

)・

4、算法A 和算法B 解同一问题,设算法A 的时间复杂性满足递归方程

,若要使得算法A 时间复杂性的阶高于算法B 时间复杂性的阶,

T(n) = aT(n/4) + n , n > 1 a 的最大整数值可取多少?

答:分别记算法A 和算法B 的时间复杂性为丁八(n)和T B (n),解相应的递归方程得:

T A (n) = O(n 2)

0(n) ,a < 4

T B (n) = < 0(nlogn) ,a = 4

O(n ,og4a ) ,a>4

依题意,要求最人的整数a 使得T B (n) 4 时,T B (n) (T A (n) <=> log 4 a < 2 <=> a<42

=16o

所以,所求的a 的最人整数值为15。

5、 算法分析的目的?

答:1)为了对算法的某些特定输入,估算该算法所協的内存空间和运行时间;

2)是为了建立衡最算法优劣的标准,用以比较同一类问题的不同算法。 6、 算法设计常用的技术?(写5种) 答:①分治法;②回溯法; ③贪心法;④动态规划法

⑤分治限界法;⑥蛮力法;⑦倒推法

三、算法设计题

1、 蛮力法:百鸡百钱问题?

2、 倒推法:穿越沙漠问题?

第二章分治算法(1) 一一递归循环

一、 填空题:

1、 总接或间接地调用自身的算法称为 递归算法,用函数自身给出定义的函数称为 递归 函数。

2、 递归方程利约束函数(递归终止条件)是递归函数的两个要素。 二、 判断题:

1、所有的递归函数都能找到对应的非递归定义。

(V )

T(n) = 1 , n = 1 ' T(n) = 4T(n/2) + n , n>l

算法B 的时间复杂性满足递归方程

2、定义递归函数时可以没冇初始值。(X )

三、简答题:

1、什么是递归算法?递归算法的特点?

答:1)递归算法:是一个模块(函数、过程)除了可调用其它模块(函数、过程)夕卜,述可以宜接或间接地调用自身的算法。

2)递归算法特点:

①每个递归函数都必须有非递归定义的初值;否则,递归函数无法计算;(递归终止条件)

②递归中用较小自变量函数值來表达较大自变量函数值;(递归方程式)

2、比较循环与递归的异同?

答:相同:递归与循环都是解决“重复操作”的机制。

不同:①就效率而言,递归算法的实现往往要比迭代算法耗费更多的时间(调用和返回均需耍额外的吋间)与存贮空间(用来保存不同次调用情况下变量的当前值的栈栈空间),也限制了递归的深度。②每个迭代算法原则上总可以转换成与它等价的递归算法;反Z不然。③递归的层次是可以控制的,而循坏嵌套的层次只能是固定的,因此递归是比循环更灵活的重复操作的机制。

3、递归算法解题通常有三个步骤?

答:1)分析问题、寻找递归:找出人规模问题与小规模问题的关系,这样通过递归使问题的规模逐渐变小。

2)设置边界、控制递归:找出停止条件,即算法对解的最小规模问题。

3)设计函数、确定参数:和其它算法模块一样设计函数体屮的操作及相关参数。

四、算法设计题:

1、楼梯上有n个台阶,上楼时可以上1步,也可以上2步,设计一递归算法求出共有多少种上楼方法F(n)o

①写出F(n)的递归表达式?

②并写岀其相应的递归算法?

解:①写出F(n)的递归表达式

分析:到n阶有两种走法:

1)n-l阶到n阶;

2)n-2阶到n阶;

1 n=l

F(n) = y 2 n=2

J(n-l) + F(n-2) n〉2

②写出其相应的递归算法?

Int F(int n)

{

if(n=l) return 1;

else if(n=2)

return 2;

else

return F(nT)+ F(n-2);

}

2、设a, b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1, 2,…,n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:

相关文档
最新文档