算法分析与设计试题完整版

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

算法分析与设计试题 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

一、选择题(20分)

1.最长公共子序列算法利用的算法是(

B )。

A、分支界限法

B、动态规划法

C、贪心法

D、回溯法

2.实现棋盘覆盖算法利用的算法是(

A )。

A、分治法

B、动态规划法

C、贪心法

D、回溯法

3.下面是贪心算法的基本要素的是(

C )。

A、重叠子问题

B、构造最优解

C、贪心选择性质

D、定义最优解

4.回溯法的效率不依赖于下列哪些因素( D )

A.满足显约束的值的个数

B. 计算约束函数的时间

C. 计算限界函数的时间

D. 确定解空间的时间

5.下面哪种函数是回溯法中为避免无效搜索采取的策略(

B )

A.递归函数 B.剪枝函数C。随机数函数 D.搜索函数

6.采用最大效益优先搜索方式的算法是(

A )。

A、分支界限法

B、动态规划法

C、贪心法

D、回溯法

7.贪心算法与动态规划算法的主要区别是(

B )。

A、最优子结构

B、贪心选择性质

C、构造最优解

D、定义最优解

8. 实现最大子段和利用的算法是(

B )。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

9.优先队列式分支限界法选取扩展结点的原则是(

C )。

A、先进先出

B、后进先出

C、结点的优先级

D、随机

10.下列算法中通常以广度优先方式系统搜索问题解的是(

A )。

A、分支限界法

B、动态规划法

C、贪心法

D、回溯法

二、填空题(22分每空2分)

1.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。

2、大整数乘积算法是用分治法来设计的。

3、以广度优先或以最小耗费方式搜索问题解的算法称为分支限界法。

4、舍伍德算法总能求得问题的一个解。

5、贪心选择性质是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

6.快速排序

template

void QuickSort (Type a[], int p, int r)

{

if (p

int q=Partition(a,p,r);

QuickSort (a,p,q-1); 哈密顿环问题的算法可由回溯法设计实

现。

8.贪心算法不一定产生最优解。

9.算法中通常以深度优先方式系统搜索问题解的是回溯法。

三、算法设计与分析(25分)

1.用欧几里德迭代算法求两个数的最小公倍数(10分)

#include

using namespace std;

int Gcd(int m,int n)

{

if(m==0)

return n;

if(n==0)

return m;

int t=m>n?n:m;

while(m%t||n%t)

t--;

return t;

}

int main()

{

int a,b;

cout<<"Input a & b (0<=a

cin>>a>>b;

int m=a*b/Gcd(a,b);

cout<<"The Least Common Multiple is:"<

return 0;

2、试用动态规划算法实现最大子矩阵和问题:求n

m 矩阵A的一个子矩阵,使其各元素之各为最大。(15分)

解:解答如下:

int MaxSum2(int m,int n,int **a)

{

int sum=0;

int *b=new int[n+1];

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

for(int k=1;k<=n;k++) b[k]=0; ……………………………..(5分)

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

for(int k=1;k<=n;k++) b[k]+=a[j][k];

int max=MaxSum(n,b);

if(max>sum) sum=max;

}

}

return sum; ……………………………..(10分)

}

int MaxSum(int n,int *a)

{

int sum=0,b=0;

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

if(b>0) b+=a[i];

else b=a[i];

if(b>sum) sum=b;

}

Return sum; ……………………………..(15分)

}

四、简答题(33分)

1、假设有7个物品,它们的重量和价值如下表所示。若这些物品均可以被分割,且背包容量M =150,如果使用贪心方法求解此背包问题,使收益最大,请写出求解

E 放入%,得到价值为。

2. 写出分治算法MaxMin 算法对下列实例中找最大数和最小数的过程。(10分)

数组 A=(48,12,61,3,5,19,32,7)

解:

1、 48,12,61,3, 5,19,32,7 表中元素多于二, 对半

分割

2、48,12 61,3 5,19 32,7 表中元素多于二, 对半

分割

3、 48~61, 12~3 19~32,5~7

求前半部分的最大最小和后半部分的最大最小,两个半部分的大者为最

大,小者为最小

4、 61~32 3~5 两个半部分的大者为最大,小者为最小

5、 61 3 寻找结束

3. 写出多段图最短路经动态规划算法求解下列实例的过程,并求出最优值。(13分)C(1,2)=3, C(1,3)=5 ,C(1,4)=2

C(2,6)=8 ,C(2,7)=4 ,C(3,5)=5 ,C(3,6)=4, C(4,5)=2,C(4,6)=1

C(5,8)=4, C(6,8)=5 ,C(7,8)=6

解 :Cost(4,8)=0

Cost(3,7)= C(7,8)+0=6 ,

Cost(3,6)= C(6,8)+0=5,

Cost(3,5)= C(5,8)+0=4

Cost(2,4)= min{C(4,6)+ Cost(3,6), C(4,5)+ Cost(3,5)}

= min{1+ 5, 2+4}=6

Cost(2,3)= min{C(3,6)+ Cost(3,6) }

= min{4+5}=9

Cost(2,2)= min{C(2,6)+ Cost(3,6), C(2,7)+ Cost(3,7)}

相关文档
最新文档