算法分析习题参考答案第五章 (1)

算法分析习题参考答案第五章 (1)
算法分析习题参考答案第五章 (1)

1.最大子段和问题:给定整数序列 n a a a ,,,21 ,求该序列形如∑=j

i k k a 的子段和

的最大值: ?

?????∑=≤≤≤j i k k n j i a 1max ,0max 1) 已知一个简单算法如下:

int Maxsum(int n,int a,int& besti,int& bestj){

int sum = 0;

for (int i=1;i<=n;i++){

int suma = 0;

for (int j=i;j<=n;j++){

suma + = a[j];

if (suma > sum){

sum = suma;

besti = i;

bestj = j;

}

}

}

return sum;

}试分析该算法的时间复杂性。

2) 试用分治算法解最大子段和问题,并分析算法的时间复杂性。

3) 试说明最大子段和问题具有最优子结构性质,并设计一个动态规划算法解最大子段和问题。分析算法的时间复杂度。

(提示:令1()max ,1,2,,j k

i j n k i b j a j n ≤≤≤===∑)

解:1)分析按照第一章,列出步数统计表,计算可得)(2n O

2)分治算法:将所给的序列a[1:n]分为两段a [1:n/2]、a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有三种可能:

①a[1:n]的最大子段和与a[1:n/2]的最大子段和相同;

②a[1:n]的最大子段和与a[n/2+1:n]的最大子段和相同;

③a[1:n]的最大子段和为两部分的字段和组成,即

j n j i l n i j a a a a a

+++++=+??

????=??????∑ 122;

intMaxSubSum ( int *a, int left , int right){

int sum =0;

if( left==right)

sum = a[left] > 0? a[ left]:0 ;

else

{int center = ( left + right) /2;

int leftsum =MaxSubSum ( a, left , center) ;

int rightsum =MaxSubSum ( a, center +1, right) ;

int s_1 =0;

int left_sum =0;

for ( int i = center ; i >= left; i--){

left_sum + = a [ i ];

if( left_sum > s1)

s1 = left_sum;

}

int s2 =0;

int right_sum =0;

for ( int i = center +1; i <= right ; i++){

right_sum + = a[ i];

if( right_sum > s2)

s2 = right_sum;

}

sum = s1 + s2;

if ( sum < leftsum)

sum = leftsum;

if ( sum < rightsum)

sum = rightsum;

}

return sum;

}

int MaxSum2 (int n){

int a;

returnMaxSubSum ( a, 1, n) ;

}该算法所需的计算时间T(n)满足典型的分治算法递归分式T(n)=2T(n/2)+O(n),分治算法的时间复杂度为O(nlogn)

3)设}{max )(1∑=≤≤=j i k k j i a j b ,则最大子段和为).(max max max max max 11111j b a a n j j i k k j i n j j i k k n j n i ≤≤=≤≤≤≤=≤≤≤≤==∑∑ 最大子段和实际就是)}(,),2(),1(max{n b b b .

要说明最大子段和具有最优子结构性质,只要找到其前后步骤的迭代关系即可。 },)1(max {},}{max max {},}{max {}{max )(1

111111j j j j j i k k j i j j i j j i k k j i k k j i a a j b a a a a a a a j b +-=+=+==∑∑∑-=-≤≤-≤≤-==≤≤

若0)1(>-j b , j a j b j b +-=)1()(;

若0)1(≤-j b ,j a j b =)(。

因此,计算)(j b 的动态规划的公式为:.1},,)1(max {)(n j a a j b j b j j ≤≤+-=

intMaxSum (int* a ,int n )

{

int sum = 0, b = 0,j=0;

for( int i=1;i<=n;i++)

{if( b >0)

b = b + a [i];

else b = a [i];

end{if}

if( b > sum) sum = b;

j=i ;

end{if}

}

return sum;

}

自行推导,答案:时间复杂度为O (n )。

2.动态规划算法的时间复杂度为O (n )(双机调度问题)用两台处理机A 和B 处理n 个作业。设第i 个作业交给机器A 处理时所需要的时间是i a ,若由机

器B 来处理,则所需要的时间是i b 。现在要求每个作业只能由一台机器处理,每台机器都不能同时处理两个作业。设计一个动态规划算法,使得这两台机器处理完这n 个作业的时间最短(从任何一台机器开工到最后一台机器停工的总的时间)。以下面的例子说明你的算法:

解:(思路一)删除

(思路二)在完成前k 个作业时,设机器A 工作了x 时间,则机器B 最小的工作时间是x 的一个函数。

设F[k][x]表示完成前k 个作业时,机器B 最小的工作时间,则

其中k b x k F +-)](1[对应第k 个作业由机器B 来处理(完成k-1个作业时机器A 工作时间仍是x ,则B 在k-1阶段用时为)](1[x k F -);而)](1[k a x k F --对应第k 个作业由机器A 处理(完成k-1个作业,机器A 工作时间是x-a[k],而B 完成k 阶段与完成k-1阶段用时相同为)](1[k a x k F --)。

则完成前k 个作业所需的时间为)}]([,max{x k F x

1)当处理第一个作业时,a[1]=2,b[1]=3;

机器A 所花费时间的所有可能值范围:0 ≤x ≤a[0].

x<0时,设F[0][x]= ∞,则max(x, ∞)= ∞;

0≤x<2时,F[1][x]=3,则Max(0,3)=3,

x ≥2时,F[1][x]=0,则Max(2,0)=2;

2)处理第二个作业时:x 的取值范围是:0 <= x <= (a[0] + a[1]),

当x<0时,记F[2][x] = ∞;以此类推下去

(思路三)假定n 个作业的集合为{}n S n ,,2,1 =。

设J 为n S 的子集,若安排J 中的作业在机器A 上处理,其余作业在机器B 上处

理,此时所用时间为???? ??=∑∑∈∈J S j j J

j j b a J T \,max )(,

则双机处理作业问题相当于确定n S 的子集J ,使得安排是最省时的。即转化为求J 使得)}({min J T n

S J ?。若记{}1,,2,11-=-n S n ,则有如下递推关系: ???? ?

????? ??+???? ??+=???? ??∑∑∑∑∑∑∈∈?∈∈?∈∈?J S j j n J j j S J J S j j J j j n S J I S j j I j j S I b b a b a a b a n n n \\\,max min ,,max min min ,max min 11--

(思路四)

此问题等价于求(x1,……x n),使得它是下面的问题最优解。

min max{x1a1+……x n a n,(1-x1)b1+……+(1-x n)b n} x i=0或1,i=1~n

基于动态规划算法的思想,对每个任务i,依次计算集合S(i)。其中每个集合中元素都是一个3元组(F1,F2,x)。这个3元组的每个分量定义为

F1:处理机A的完成时间

F2:处理机B的完成时间

x:任务分配变量。当x i=1时表示将任务i分配给处理机A,当x i=0时表示分配给处理机B。初始时,S(0)={(0,0,0)}

令F=按处理时间少的原则来分配任务的方案所需的完成时间。

例如,当(a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2),(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)时,按处理时间少的原则分配任务的方案为(x1,x2,x3,x4,x5,x6)=(1,1,0,1,0,1)

因此,F=max{2+5+10+2,7+5}=19。

然后,依次考虑任务i,i=1~n。在分配任务i时,只有2种情形,x i=1或x i=0。此时,令S(i)={S(i-1)+(a i,0,2i)}U{S(i-1)+(0,b i,0)}在做上述集合并集的计算时,遵循下面的原则:

①当(a,b,c),(d,e,f)?S(i)且a=d,b<=e时,仅保留(a,b,c);

②仅当max{a,b}<=F时,(a,b,c)?S(i)

最后在S(n)中找出使max{F1,F2}达到最小的元素,相应的x即为所求的最优解,其最优值为max{F1,F2}。

当(a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2),(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)时,按处理时间少的原则分配任务的方案为(x1,x2,x3,x4,x5,x6)=(1,1,0,1,0,1)

因此,F=max{2+5+10+2,7+5}=19。

S(0)={(0,0,0)};

S(1)={(2,0,2),(0,3,0)}

S(2)={(7,0,6),(5,3,4),(2,8,2),(0,11,0)}

S(3)={(14,0,14),(12,3,12),(9,8,10), (7,4,6),(5,7,4),(2,12,2),(0,15,0)}

S(4)={(19,8,26), (17,4,22),(15,7,20),(12,12,18),(14,11,14),(9,19,10),(7,15,6),(5,18,4)}

S(5)={(19,11,46), (12,15,38),(19,11,26), (17,7,22),(15,10,20),(12,15,18),(14,14,14),(7,18,6)}

S(6)={(14,15,102),(19,7,86),(17,10,84),(14,15,82), (9,18,70),(12,19,38),(15,14,20),(12,19,18)} max(F1,F2)最小的元组为(14,15,102),(14,15,82),(15,14,20)

所以,完成所有作业最短时间是15,安排有三种:

(1,1,0,0,1,1),(1,0,0,1,0,1),(0,1,0,1,0,0)

(思路五)C++ 源代码如下:

#include

usingnamespace std;

constint MAXS = 70;

constint MAXN = 10;

bool p[MAXS][MAXS][MAXS];

int a[MAXS],b[MAXS];

int schduleDyn(int * a,int * b,int n,int mn)

{ int i,j,k;

//===========数组初始化===================

for(i = 0; i <= mn; i++)

for(j = 0; j <= mn; j++)

{ p[i][j][0] = true;

for(k = 1 ; k <= n; k++)

p[i][j][k] = false;

}

//===========动态递归=============

for(k = 1; k <= n; k ++)

for(i = 0; i <= mn; i++)

for(j = 0; j <= mn; j++)

{ if( (i - a[k-1]) >= 0)

p[i][j][k] = p[i - a[k-1]][j][k-1];

if( (j - b[k-1]) >= 0)

p[i][j][k] = (p[i][j][k] | p[i][j-b[k-1]][k-1]);

}

//================求结果=====================

int rs = mn;

int temp = 0;

for(i = 0; i <= mn; i++)

for(j = 0; j <= mn ; j++)

{if(p[i][j][n])

{ temp = i > j ? i : j;

if(temp < rs)

rs = temp;

}

}

return rs;

}

void main()

{

int i,n,m = 0,mn = 0;

//=============初始化========================

cin >> n;

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

{ cin >> a[i];

if(a[i] > m)

m = a[i];

}

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

{

cin >> b[i];

if(b[i] > m)

m = b[i];

}

mn = m * n;

//=========动态规划求解=================

cout << schduleDyn(a,b,n,mn) << endl; system("pause");

}

对于例子: n = 6 ;(a1,….,a6) = (2 5 7 10 5 2),(b,1…,b6) = (3 8 4 11 3 4); 由于求解过程比较繁锁,这里只说个大概算法执行过程,首先,用p[i][j][k],记录下对于第k 个作业,能否在对于a 机器是i 时间以内,对于b 机器是j 时间以内完成,如果能,则把p[i][j][k]设为true.经过了设置后,求对于n 个作业的所有可能的值为p[i][j][n],对min(max(i,j)),结果为15.即为所得到的结果.

3.考虑下面特殊的整数线性规划问题

试设计一个解此问题的动态规划算法,并分析算法的时间复杂度。

解:方法1.

设,21},1,0{n i y i ≤≤∈令n i y y x n i i i ≤≤+=+1,,则上述规划问题转化为:

n i y b y a y c i n

i i i n i i i 21},1,0{,,max 2121≤≤∈≤∑∑==,其中n i a a c c i n i i n i ≤≤==++1,,,

把i c 看作价值,i a 看作重量,b 看作背包容量。

转化为0/1背包问题,所以可以0/1背包问题的动态规划算法来求解。由于n 件物品的0/1背包的时间复杂性是O (2n ),则此时为O (4n )。

方法2.

可以看成是另一种背包问题。即b 为背包容量,}2,1,0{x i ∈为背包中可以装0,1,或者2件物品,i x 对应的价值为i c ,求在容量b 一定的前提下,背包所容纳的物品的最大价值。也就是参数完全相同的两个0-1背包问题,它们同时制约于背包容量为C 这个条件。

在设计算法时可以优先考虑i m ,也就是先判断背包剩下的容量能不能放进去i c ,若

可以再判断能否使1=i p ,若可以则就再放入一个i c ,这样就间接满足了2=+=i i i p m x 的条件。

(以上各题均来自同学们作业中的思想,仅供参考,自行整理答案。)

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

算法设计与分析考试题 及答案 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

计算机组成原理试题及答案

A .(7CD )16 B. ( 7D0)16 C. (7E0)16 D. 3. 下列数中最大的数是 _______ 。 A .(10011001) 2 B. (227) 8 C. (98)16 4. ____ 表示法主要用于表示浮点数中的阶码。 A. 原码 B. 补码 C. 反码 D. 移码 5. 在小型或微型计算机里,普遍采用的字符编码是 A. BCD 码 B. 16 进制 C. 格雷码 6. 下列有关运算器的描述中, ______ 是正确的 A. 只做算术运算,不做逻辑运算 B. C. 能暂时存放运算结果 D. 7. EPROM 是指 ____ 。 A. 读写存储器 B. C. 可编程的只读存储器 D. 8. Intel80486 是 32位微处理器, Pentium 是A.16 B.32 C.48 D.64 9 .设]X ]补=1.XXX 3X 4,当满足 _________ ■寸,X > -1/2 成立。 A. X 1必须为1,X 2X 3X 4至少有一个为1 B. X 1必须为1 , X 2X 3X 4任意 C. X 1必须为0, X 2X 3X 4至少有一个为1 D. X 1必须为0, X 2X 3X 4任意 10. CPU 主要包括 _____ 。 A.控制器 B. 控制器、运算器、cache C.运算器和主存 D.控制器、ALU 和主存 11. 信息只用一条传输线 ,且采用脉冲传输的方式称为 _________ 。 A. 串行传输 B. 并行传输 C. 并串行传输 D. 分时传输 12. 以下四种类型指令中,执行时间最长的是 _________ 。 A. RR 型 B. RS 型 C. SS 型 D. 程序控制指令 13. 下列 _____ 属于应用软件。 A. 操作系统 B. 编译系统 C. 连接程序 D. 文本处理 14. 在主存和CPU 之间增加cache 存储器的目的是 _____ 。 A. 增加内存容量 B. 提高内存可靠性 C.解决CPU 和主存之间的速度匹配问题 D. 增加内存容量,同时加快存取速 度 15. 某单片机的系统程序,不允许用户在执行时改变,则可以选用 ____________ 作为存储芯 片。 A. SRAM B. 闪速存储器 C. cache D. 辅助存储器 16. 设变址寄存器为X ,形式地址为D, (X )表示寄存器X 的内容,这种寻址方式的有 效地址为 ______ 。 A. EA=(X)+D B. EA=(X)+(D) C.EA=((X)+D) D. EA=((X)+(D)) 17. 在指令的地址字段中,直接指出操作数本身的寻址方式,称为 ___________ 。 A. 隐含寻址 B. 立即寻址 C. 寄存器寻址 D. 直接寻址 18. 下述 I/O 控制方式中,主要由程序实现的是 ________ 。 7F0)16 D. ( 152)10 o D. ASC H 码 只做加法 既做算术运算,又做逻辑运算 只读存储器 光擦除可编程的只读存储器 位微处理器。

大学计算机习题参考答案

《大学计算机基础与计算思维》习题参考答案 第一章计算机引论 一、简答题 (1)什么是数据?什么是信息?二者有什么关系? 答:数据是记录下来的可以鉴别的符号,它可以通过语言、文字、符号、图形、声音、光、电等来记录客观事物的状态。数据是对客观事物的一种符号描述,而信息是经过加工后的数据,是可以用来通信的知识。信息是用来消除随机不确定性的东西。二者关系为:数据是信息的原材料,而信息则是数据加工后的产品。 (2)支撑人类社会文明的三要素是什么?如何理解三者在不同历史时期的地位和作用? 答:三要素为:信息、物质、能源。不同历史时期三种要素的利用比例不同。 (3)什么是数字化?在计算机领域内又如何理解? 答:数字化分为广义和狭义二种,广义的数字化:指信息经过数字化处理的广泛应用。狭义的数字化:是指由数字信号(数码)取代模拟信号来表征、处理、存储、传输各种信息的过程。在计算机领域内,我们可以将数字化理解为将许多复杂的信息转变为可以度量的数字、数据,再以这些数字、数据建立起适当的数字化模型,把它们转变成一系列二进制代码,引入计算机内部,进行统一处理。 (4)简述计算机的发展阶段。 答:1932年英国数学家亚伦.图灵(Alan Turing)提出一人计算模型,称图灵机,现在的计算机在本质上与图灵机是一样的。 1936年,Konrad Zuse建造了一台可编程的数字化计算机,它引入了二进制系统和电子管的使用。 第一代计算机:1946至1956年,世界上第一台计算机ENIAC,电子管元件。宾夕法尼亚大学的美籍匈牙利数学家冯.诺依曼改进了ENIAC研制出了世界上第二台计算机EDVAC,作了重要改进:一是采用了二进制,二是程序和数据存入计算机内部。冯.诺依曼为现代计算机在体系结构和工作原理奠定了基础。当今的计算机依然遵循的是冯.诺依曼提出的计算机体系结构。 第二代计算机: (5) 简述计算机的特点。 运算速度快、计算精度高、存储容量大、具有逻辑判断功能、可靠性高、自动化程度高、通用性强等。 (6)简述计算机的应用领域。 科学计算、数据处理、过程控制、计算机辅助工程、办公自动化、数据通信、人工智能等。(7)什么是计算思维? 计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人尖行为理解等涵盖计算机领域的一系列思维活动。 (8) 计算思维主要包含哪些思维内容? 计算思维主要包括科学思维、逻辑思维、效率思维、创新思维和伦理思维等内容。

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

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 字符信息是符号数据,属于处理(非数值)领域的问题,国际上采用的字符系统是七单位的(ASCII)码。P23 2 按IEEE754标准,一个32位浮点数由符号位S(1位)、阶码E(8位)、尾数M(23位)三个域组成。其中阶码E的值等于指数的真值(e)加上一个固定的偏移值(127)。P17 3 双端口存储器和多模块交叉存储器属于并行存储器结构,其中前者采用(空间)并行技术,后者采用(时间)并行技术。P86 4 衡量总线性能的重要指标是(总线带宽),它定义为总线本身所能达到的最高传输速率,单位是(MB/s)。P185 5 在计算机术语中,将ALU控制器和()存储器合在一起称为()。 6 数的真值变成机器码可采用原码表示法,反码表示法,(补码)表示法,(移码)表示法。P19-P21 7 广泛使用的(SRAM)和(DRAM)都是半导体随机读写存储器。前者的速度比后者快,但集成度不如后者高。P67 8 反映主存速度指标的三个术语是存取时间、(存储周期)和(存储器带宽)。P67 9 形成指令地址的方法称为指令寻址,通常是(顺序)寻址,遇到转移指令时(跳跃)寻址。P112 10 CPU从(主存中)取出一条指令并执行这条指令的时间和称为(指令周期)。 11 定点32位字长的字,采用2的补码形式表示时,一个字所能表示

的整数范围是(-2的31次方到2的31次方减1 )。P20 12 IEEE754标准规定的64位浮点数格式中,符号位为1位,阶码为11位,尾数为52位,则它能表示的最大规格化正数为(+[1+(1-2 )]×2 )。 13 浮点加、减法运算的步骤是(0操作处理)、(比较阶码大小并完成对阶)、(尾数进行加或减运算)、(结果规格化并进行舍入处理)、(溢出处理)。P54 14 某计算机字长32位,其存储容量为64MB,若按字编址,它的存储系统的地址线至少需要(14)条。64×1024KB=2048KB(寻址范32围)=2048×8(化为字的形式)=214 15一个组相联映射的Cache,有128块,每组4块,主存共有16384块,每块64个字,则主存地址共(20)位,其中主存字块标记应为(9)位,组地址应为(5)位,Cache地址共(13)位。 16 CPU存取出一条指令并执行该指令的时间叫(指令周期),它通常包含若干个(CPU周期),而后者又包含若干个(时钟周期)。P131 17 计算机系统的层次结构从下至上可分为五级,即微程序设计级(或逻辑电路级)、一般机器级、操作系统级、(汇编语言)级、(高级语言)级。P13 18十进制数在计算机内有两种表示形式:(字符串)形式和(压缩的十进制数串)形式。前者主要用在非数值计算的应用领域,后者用于直接完成十进制数的算术运算。P19 19一个定点数由符号位和数值域两部分组成。按小数点位置不同,

计算机练习题 9

计算机应用基础 9 1、目前使用的微型计算机硬件主要采用的电子器件是______。 A、真空管 B、晶体管 C、超大规模集成电路 D、集成电路 答案: C 2、既可以接收、处理和输出模拟量,也可以接收、处理和输出数字量的计算机是______。 A、电子数字计算机 B、电子模拟计算机 C、数模混合计算机 D、专用计算机 答案: C 3、我们说"计算机具有逻辑判断能力",主要取决于计算机______。 A、运行速度 B、存储容量 C、所运行的程序中预定的判断方法 D、基本字长 答案: C 4、计算机的应用范围可分为几个大类,在这些大类中应用最广泛的是______。 A、数据处理 B、辅助设计 C、过程控制 D、人工智能 答案: A 5、用语言、文字、符号、场景、图像、声音等方式表达的内容统称为______。 A、信息社会 B、信息技术 C、信息 D、信息处理 答案: C 6、计算机系统由两大部分构成,它们是______。 A、系统软件和应用软件

B、主机和外部设备 C、硬件系统和软件系统 D、输入设备和输出设备 答案: C 7、通常把计算机一次所能处理数据的最大位数称为该机器的______。 A、卷 B、字 C、字长 D、块 答案: C 8、在办公室中,用来编制文档的字处理程序是______。 A、应用软件 B、信息管理系统软件 C、操作系统 D、程序设计语言 答案: A 9、冯·诺依曼计算机由五大部分组成,运算器是其中之一。它完成的功能包括______。 A、完成算术运算或逻辑运算 B、完成对打印机的输出 C、完成从硬盘的输入 D、完成从光盘的输入 答案: A 10、ROM中存储的信息是______。 A、由计算机制造厂预先写入的 B、在系统安装时写入的 C、根据用户需求不同,由用户随时写入的 D、由程序临时写入的 答案: A 11、以下不属于外部设备的是______。 A、输入设备 B、主存储器 C、输出设备 D、外存储器

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

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 )。

(完整版)算法设计与分析期末考试卷及答案a

一.填空题(每空 2 分,共30分) 1.算法的时间复杂性指算法中的执行次数。 2.在忽略常数因子的情况下,O、和三个符号中,提供了算法运行时间的一个上界。 3.设D n表示大小为n的输入集合,t(I)表示输入为I时算法的运算时间, p(I)表示输入 I 出现的概率,则算法的平均情况下时间复杂性A(n)= 。 4.分治算法的时间复杂性常常满足如下形式的递归方程: f (n) d , n n0 f(n) af(n/c) g(n) , n n0 其中,g(n)表示。 5. 分治算法的基本步骤包括。6.回溯算法的基本思想是。 7.动态规划和分治法在分解子问题方面的不同点是。 8.贪心算法中每次做出的贪心选择都是最优选择。 9.PQ 式的分支限界法中,对于活结点表中的结点,其下界函数值越小,优先级 10.选择排序、插入排序和归并排序算法中,算法是分治算法。 11.随机算法的一个基本特征是对于同一组输入,不同的运行可能得到的结果。12. 对于下面的确定性快速排序算法,只要在步骤3 前加入随机 化步骤,就可得到一个随机化快速排序算法,该随机化步骤的功能是。 算法QUICKSORT 输入:n 个元素的数组A[1..n] 。 输出:按非降序排列的数组 A 中的元素

1. quicksort(1, n) end QUICKSORT _ _ 过程 quicksort(A, low, high) _ _ // 对 A[low..high] 中的元素按非降序排序。 _ 号 学 2. if low

计算机组成原理练习题-答案

一、填空题 1.对存储器的要求是速度快,_容量大_____,_价位低_____。为了解决这方面的矛盾,计算机采用多级存储体系结构。 2.指令系统是表征一台计算机__性能__的重要因素,它的____格式__和___功能___不仅直接影响到机器的硬件结构而且也影响到系统软件。 3.CPU中至少有如下六类寄存器__指令____寄存器,__程序_计数器,_地址__寄存器,通用寄存器,状态条件寄存器,缓冲寄存器。 4.完成一条指令一般分为取指周期和执行周期,前者完成取指令和分析指令操作,后者完成执行指令操作。 5.常见的数据传送类指令的功能可实现寄存器和寄存器之间,或寄存器和存储器之间的数据传送。 6.微指令格式可分为垂直型和水平型两类,其中垂直型微指令用较长的微程序结构换取较短的微指令结构。 7.对于一条隐含寻址的算术运算指令,其指令字中不明确给出操作数的地址,其中一个操作数通常隐含在累加器中 8.设浮点数阶码为8位(含1位阶符),尾数为24位(含1位数符),则32位二进制补码浮点规格化数对应的十进制真值范围是:最大正数为 2^127(1-2^-23) ,最小正数为 2^-129 ,最大负数为 2^-128(-2^-1-2^-23) ,最小负数为 -2^127 。 9.某小数定点机,字长8位(含1位符号位),当机器数分别采用原码、补码和反码时,其对应的真值范围分别是 -127/128 ~+127/128 -1 ~+127/128 -127/128 ~+127/128 (均用十进制表示)。 10.在DMA方式中,CPU和DMA控制器通常采用三种方法来分时使用主存,它们是停止CPU访问主存、周期挪用和DMA和CPU交替访问主存。 11.设 n = 8 (不包括符号位),则原码一位乘需做 8 次移位和最多 8 次加法,补码Booth算法需做 8 次移位和最多 9 次加法。 12.设浮点数阶码为8位(含1位阶符),尾数为24位(含1位数符),则32位二进制补码浮点规格化数对应的十进制真值范围是:最大正数为,最小正数为,最大负数为,最小负数为。 13.一个总线传输周期包括申请分配阶段、寻址阶段、传输阶段和结束阶段四个阶段。 14.CPU采用同步控制方式时,控制器使用机器周期和节拍组成的多极时序系统。

第一章 计算机基础习题参考答案

第1章计算机基础 1.2计算机发展 1.2.1单选题: 1.世界上第一台电子计算机是于_______诞生于_______。 A)1946年,法国 B)1946年,美国 C)1946年,英国 D)1946年,德国 2.世界上第一台电子数学计算机研制成功的时间是_______年。 A)1936 B)1946 C)1956 D)1975 3.计算机的发展阶段通常是按计算机所采用的_______来划分的。 A)内存容量 B)电子器件 C)程序设计语言 D)操作系统 4.计算机的发展趋势是巨型化、微小化、网络化、_______、多媒体化。 A)智能化 B)数字化 C)自动化 D)以上都对 5.从第一台计算机诞生到现在的几十年中,按计算机采用的_______来划分,计算机的发展经历了4个阶段。 A)存储器 B)计算机语言 C)电子器件 D)体积 6.计算机语言的发展经历了_______。 A)高级语言、汇编语言和机器语言 B)高级语言、机器语言和汇编语言 C)机器语言、高级语言和汇编语言 D)机器语言、汇编语言额高级语言 7.从第一代电子数字计算机到第四代计算机大部分体系结构都是相同的,是由运算器、控制器、存储器以及输入/输出设备组成的。称为_______体系结构。 A)艾伦·图灵 B)罗伯特·诺伊斯 C)比尔·盖茨 D)冯·诺依曼 8.第二代计算机采用的电子器件是_______。 A)晶体管 B)电子管 C)中小规模集成电路 D)超大规模集成电路 9.采用大规模集成电路或超大规模集成电路的计算机属于_______计算机。 A)第一代 B)第二代 C)第三代 D)第四代 10.“奔腾”第一代兼容的微型计算机采用的CPU芯片型号是_______。 A)80286 B)80386 C)80486 D)80586 11.巨型计算机指的是_______。 A)重量大 B)体积大 C)功能强 D)耗电量大 12.目前大多数计算机,就其工作原理而言,基本上采用的是科学家_______提出的存储程序控制原理。 A) 比尔.盖茨 B)冯.诺依曼 C)乔治.布尔 D)艾伦.图灵 13.目前广泛使用的计算机绝大多数是微型计算机,属于第四代计算机,她是随着大规模集成电路和发展而发展起来的。美国英特尔公司制成的第一片微处理器(CPU)是在_______。 A)40年代末 B)50年代初 C)70年代初 D)80年代初 14.我国自行设计研制的银河II型计算机是_______。 A)微型计算机 B)小型计算机 C)中型计算机 D)巨型计算机

计算机组成原理典型例题讲解

分析设计计算: 1.CPU结构如图1所示,其中有一个累加寄存器AC,一个状态条件寄存器,各部分之间的连线表示数据通路,箭头表示信息传送方向。 (1)标明图中四个寄存器的名称。 (2)简述指令从主存取到控制器的数据通路。 (3)简述数据在运算器和主存之间进行存/ 取访问的数据通路。 图1 解: (1)a为数据缓冲寄存器DR ,b为指令寄存器IR ,c为主存地址寄存器,d为程序计数器PC。 (2)主存M →缓冲寄存器DR →指令寄存器IR →操作控制器。 (3)存贮器读:M →缓冲寄存器DR →ALU →AC 存贮器写:AC →缓冲寄存器DR →M

2. 某机器中,配有一个ROM芯片,地址空间0000H—3FFFH。现在再用几个16K×8的芯片构成一个32K×8的RAM区域,使其地址空间为8000H—FFFFH。假设此RAM芯片有/CS和/WE信号控制端。CPU地址总线为A15—A0,数据总线为D7—D0,控制信号为R//W,MREQ(存储器请求),当且仅当MREQ 和R//W同时有效时,CPU才能对有存储器进行读(或写)。 (1)满足已知条件的存储器,画出地址码方案。 (2)画出此CPU与上述ROM芯片和RAM芯片的连接图。 解:存储器地址空间分布如图1所示,分三组,每组16K×8位。 由此可得存储器方案要点如下: (1)用两片16K*8 RAM芯片位进行串联连接,构成32K*8的RAM区域。片内地址:A0——A13,片选地址为:A14——A15; (2)译码使用2 :4 译码器; (3)用/MREQ 作为2 :4译码器使能控制端,该信号低电平(有效)时,译码器工作。 (4)CPU的R / /W信号与RAM的/WE端连接,当R // W = 1时存储器执行读操作,当R // W = 0时,存储器执行写操作。如图1 0000 3FFF 8000

计算机练习题

。 课件练习题 选择题 1、Flash MX中的图形格式包括( A )和( C )两类。 A. 矢量模式 B. JPEG模式 C. 位图模式 D. AIF模式 2、在Flash MX中可以导入的文件有( ABC )几种。 A. 图像文件 B. 声音文件 C. 视频文件 D. 以上都不是 % 3、使用( B )工具可以绘制更加精确、光滑的贝塞尔曲线,并且可以使用( D )工具调整曲线的弯曲度等。 A. 铅笔 B. 钢笔 C. 直线 D. 部分选取 4、【铅笔工具】的三种模式是( ABC )。 A. 伸直:当绘制的图形接近椭圆形时,Flash将自动将其转化为一个椭圆 B. 平滑(Smooth):用【铅笔工具】绘制图形时的轨迹 C. 墨水:该模式适用于绘制线条轨迹 D. 柔软(Soft):该模式下的轨迹变浅 ` 5、修改椭圆的笔触颜色,可以使用( AC )。 A. 工具箱中的【笔触颜色】按钮 B. 工具箱中的【填充颜色】按钮 C. 【椭圆工具】属性面板中的【笔触颜色】按钮 D. 【椭圆工具】属性面板中的【填充颜色】按钮 6、使用( D )工具绘制的图形可以随时调整其形状。 ! A. 铅笔工具 B. 椭圆工具 C. 矩形工具 D. 钢笔工具 7、( B )工具经常与【钢笔工具】配合使用,以调整路径的形状。 A. 选择工具 B. 部分选取工具 C. 直线工具 D. 铅笔工具 8、当选择( B )模式后,用【刷子工具】所绘制的图形只将已有图形的填充区域覆盖掉,而对线条不起作用。 A. 标准绘画 B. 颜料填充 C. 后面绘画 D. 颜料选择 ` 9、在对图形对象操作前,需利用( AB )工具选取对象。 A. 选择工具 B. 部分选取工具 C. 任意变形工具 D. 钢笔工具 10、改变矢量图形的填充区域颜色,需使用( B )工具。 A. 墨水瓶工具 B. 颜料桶工具 C. 画笔工具 D. 选择工

算法分析与设计复习题及答案

算法分析与设计复习题及答案一、单选题 1.D 2.B 3.C 4.D 5.D 6.D 7.C 8.D 9.B 10.C 11.D 12.B 13.D 14.C 15.C 16.D 17.D 18.D 19.D 20.C 1.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 2.根据执行算法的计算机指令体系结构,算法可以分为()。 A精确算法与近似算法B串行算法语并行算法 C稳定算法与不稳定算法D32位算法与64位算法 3.具有10个节点的完全二叉树的高度是()。 A6B5C3D 2 4.下列函数关系随着输入量增大增加最快的是()。 Alog2n B n2 C 2n D n! 5.下列程序段的S执行的次数为( )。 for i ←0 to n-1 do for j ←0 to i-1 do s //某种基本操作 A.n2 B n2/2 C n*(n+1) D n(n+1)/2 6.Fibonacci数列的第十项为( )。 A 3 B 13 C 21 D 34 7.4个盘子的汉诺塔,至少要执行移动操作的次数为( )。 A 11次 B 13次 C 15次 D 17次 8.下列序列不是堆的是()。 A 99,85,98,77,80,60,82,40,22,10,66 B 99,98,85,82,80,77,66,60,40,22,10 C 10,22,40,60,66,77,80,82,85,98,99 D 99,85,40,77,80,60,66,98,82,10,22 9.Strassen矩阵乘法的算法复杂度为()。 AΘ(n3)BΘ(n2.807) CΘ(n2) DΘ(n) 10.集合A的幂集是()。 A.A中所有元素的集合 B. A的子集合 C. A 的所有子集合的集合 D. 空集 11.与算法英文单词algorithm具有相同来源的单词是()。 A logarithm B algiros C arithmos D algebra 12.从排序过程是否完全在内存中显示,排序问题可以分为()。 A稳定排序与不稳定排序B内排序与外排序 C直接排序与间接排序D主排序与辅助排序 13.下列()不是衡量算法的标准。 A时间效率B空间效率 C问题难度D适应能力 14.对于根树,出度为零的节点为()。 A0节点B根节点C叶节点D分支节点 15.对完全二叉树自顶向下,从左向右给节点编号,节点编号为10的父节点编号为()。 A0B2C4D6 16.下列程序段的算法时间的复杂度为()。 for i ←0 to n do for j ←0 to m do

计算机组成原理试题

计算机组成原理试题(A) 教学中心名称考点成绩 专业、班级姓名学号 一、填空题(每空1分,共10分) 1.计算机中的信息可分为两类,它们是信息和信息。 2.第二代电子数字计算机所用的基本器件是。 3.设X=-9/16,[X]补= 。 4.运算器中的核心部件是。 5.浮点表示法中,阶码决定浮点数的,尾数决定浮点数的。 6.CPU中PC的主要功能是。 7.按照信息的传送格式,接口可分为和两大类。 二、选择题(每小题2分,共20分) 1. 某主存储器按字节编址,地址线数目为16,这个存储器的容量为 . A 16K×16位B.32K×8位、C.64K ×8位 2.采用DMA方式传送数据时,每传送一个数据就要占用的时间。 A一个指令周期B.一个存储周期C.一个机器周期 3. Cache是。 A.主存的一部分 B.为扩大存储容量而设置的 C.为提高存储系统的速度而设置的 4.操作控制器的功能是。 A产生操作控制信号,以解释并执行指令 B、产生时序信号C.对指令泽码 5.中断响应时,保存PC并更新PC的内容,主要是为了. A.提高处理机的速度 B.能进入中断处理程字并能正确返回原程序 C.便于编制中断处理程序 6.计算机辅助设计是指。 A.CAD B.CAI C.CAT 7.某机字长32位,内存容量为4MW,若按字节编址,其寻址范围为. A.0~4M B。0~16M C.0~32M 8.在磁盘存储器中,与转速无关的技术指标是。 A.存储密度B.平均等待时间C.数据传输率 9.设指令中的形式地址为以相对寻址时,操作数的有效地址E=. A.(D)B.(PC)+D C.(R)+D

10.计算机中,执行部件接控制部件的命令所作的不可再分的操作称为. A.微命令B.微操作C操作 三.判断改错题(每小题2分,共10分。正确,在括号内打√;错误,则打×并更正) 1.磁盘存储器是一种随机存取存储器。() 2.零地址指令就是没有操作数的指令。() 3.时序发生器是控制器的主要部件之一。() 4.设X=10110110,采奇校验时,其校验位C=1。() 5.中断处理过程中,保存现场必须在中断服务之后进行。() 四.简答题(每小题10分,共40分) 1.CPU由哪些主要部件组成?说明各部件的作用。 2.试述高速缓冲存储器的基本设计思想和特点。 3.主机与外部设备间为什么要设置接口? 4.为什么说取指令是公操作?在取指令阶段,CPU主要完成哪些操作? 五.计算题(共10 分) 1.设X=0.0101,Y=-0.1101,用双符号补码计算X+Y=?和X-Y=?并判断其结果是否溢出。(5分) 2. 设X=8C3E(H),Y=B6DF(H),Z=54D2(H)。求X∧Y⊕Z=? (5分) 七.设计题(10分) 某机字长16 位,主存按字编址,容量为8MW,请用如下RAM芯片为该机设计一个主存。 A A0 07 1.地址线和数据线各有多少根? 2.共用多少这种芯片? 3.画出其组成框图,并正确标出各信号线。

计算机习题

一、判断题 1、微处理器已经进入双核和64 位的时代,当前与Intel 公司在芯片技术上全面竞争并获得不俗业绩的公司是AMD公司。参考答案:正确 2、浏览网页,这属于Internet 所提供的WWW服务。参考答案:正确 3、安装web服务器程序后,如果是在服务器所在的计算机上,直接输入http://127.0.0.1,可以访问站点默认文档。参考答案:正确 4、计算机物理安全是计算机安全的最重要方面。参考答案:正确 5、是用于设置页面标题的。参考答案:错误 6、若强制要求VBScript的变量在使用前必须事先声明,则应使用Dim语句来设置。 参考答案:错误 7、任何程序都可以用三种基本结构表示,它们是顺序结构、选择结构和循环结构。 参考答案:正确 8、Function过程必须通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。 参考答案:正确 9、JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本。参考答案:正确 10、Response对象的方法有Write、End、abandon、Redirect。参考答案:错误 11、若表单提交时采用的是get方法,则服务器端要获得表单所提交的数据,应采用request.form(“表单域名”)。参考答案:错误 12、在应用程序的各个页面中传递值,可以使用内置对象Request、Application、Session。参考答案:正确 13、如果想统计一个浏览者进入本站点以后浏览的页面次数(包括对同一页面的多次浏览)则可以使用Server对象。参考答案:错误 14、参照完整性数据库的主键可以为空。参考答案:错误 15、在SQL语言中,使用了GROUP BY子句分组的时候,在Select子句可以使用聚合函数。参考答案:正确 16、在WEB程序开发中目前最广泛采用的计算模式是B/S(Browser/Server)浏览器/服务器模式。参考答案:正确 17、Internet 上的WWW服务器使用的主要协议是SMTP。参考答案:错误 18、安装web服务器程序后,在地址栏输入服务器的IP地址,可以访问站点默认文档。 参考答案:正确 19、网站的硬件最主要的就是服务器,服务器一般要求专用服务器,而专用服务器中通常具有多个CPU。参考答案:正确 20、ASP技术可以轻松实现在跨平台的Web服务器的工作。参考答案:错误 21、HTML文件可以用一个简单的文本编辑器创建。参考答案:正确 22、运算符优先级由高到底的顺序为:(指数运算^)→(取负-)→(乘*、除/)→(求余MOD)→(整除\)→(加+、减-)。参考答案:错误 23、在使用Call调用时,过程名后不能带括号;而省略Call执行调用过程时,过程名后必须加括号。参考答案:错误 24、ASP代码既可以运行于Web服务器端,也可以运行于客户端浏览器。参考答案:错误 25、Application对象仅用于存储共享数据,而Session对象还可用于存储指定用户数据。 参考答案:正确 26、关系数据库中一张表只能设置唯一一个主键。参考答案:正确 27、计算机网络按拓扑结构,可划分为局域网、城域网和广域网参考答案:错误

计算机算法设计与分析小论文

计算机算法设计与分析小论文 摘要: 算法是一个系列解决问题的清晰指令,即在有限时间内能够对一定规范的输入,能够得到所需要的输出。如果一个算法本身是有缺陷的!那么他往往不是这个问题的最佳解决方法,可见一个算法的优劣是通过一定的准则来规定的。通过这学期的对《计算机算法分析设计》这门课程的学习让我们充分的了解到了计算机算法的多样性和复杂性,让我们更加细心和耐心的去对待这门课程。例如甲某要去某个地方旅游,他有很多种方案到旅游地,但是不见的每种方案都是合理最优的!这时就是需要考虑透过一定的算法来得到自己的最优路线。所以可见算法就是以最少的成本、最快的速度、最好的质量开发出合适各种各样应用需求的软件,必须遵循软件工程的原则,设计出高效率的程序。一个高效的程序不仅需要编程技巧,更需要合理的数据组织和清晰高效的算法。目前我们将进行常见的算法分析设计策略介绍: 1.递归算法 1.1递归算法介绍: 直接或间接的调用自身的算法称为递归算法。或者说就是用自己来定义自己,不断调用自己的某一种状态。 1.2递归算法满足的条件 (1)递归满足2个条件: 1)有反复执行的过程(调用自身) 2)有跳出反复执行过程的条件(递归出口) 1.3递归例子 递归例子:阶乘问题 n! = n * (n-1) * (n-2) * ...* 1(n>0) //阶乘 intresult(int i) { int sum = 0; if (0 == i) return (1); else sum = i * result(i-1); return sum; }

可见一个递归算法都有一个比较特殊的特点,那就是要先处理一些比较特殊的情况再处理递归关系。如上例中如果是0!的话!那么他的阶乘就是1,所以先处理0!这个特殊情况,然后再调用其他的递归关系得到自己想要的阶乘。比如当我们想要求出4!的结果那么我们就需要调用result(3)的结果而result(3)又要调用result(2)的结果!就这样直到得出答案为止。 在我们日常,递归算法的出现可以帮助我们解决很多问题,正因为它的:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。 2.分治算法 2.1分治算法介绍: 一个分治算法把问题实例划分成若干子实例(多数情况是分成两个),并分别递归地解决每个子实例,然后把这些子实例的解组合起来,得到原问题实例的解。 2.2 分治算法的特性 1)规模小,则很容易解决 2)大问题可以分为若干规模小的相同问题 3)利用子问题的解可以合并成该问题的解 2.3分治算法的遇到问题 为了阐明这个方法,考虑这样一问题:在一个整数组A[1...n]中,同时寻找最大值和最小值。下面我们来看一下用分治策略:将数组分割成两半,A[1...n/2]和A[(n/2)+1...n],在每一半中找到最大值和最小值,并返回这两个最小值中的最小值及这两个最大值中的最大值。 过程 Min-Max ⅰ输入 n个整数元素的数组A[1...n]n为2的幂 ⅱ输出 (x,y), A中的最大元素和最小元素

《算法分析与设计》期末试题及参考答案

《算法分析与设计》期末试题及参考答案 一、简要回答下列问题: 1.算法重要特性是什么? 1.确定性、可行性、输入、输出、有穷性 2. 2.算法分析的目的是什么? 2.分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。 3. 3.算法的时间复杂性与问题的什么因素相关? 3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。 4.算法的渐进时间复杂性的含义? 4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。 5.最坏情况下的时间复杂性和平均时间复杂性有什么不同? 5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的 算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度: W(n) = max{ T(n,I) } , I∈Dn 平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和: A(n) =∑P(I)T(n,I) I∈Dn 6.简述二分检索(折半查找)算法的基本过程。 6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较, 如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]

相关文档
最新文档