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

发布时间 : 星期一 文章算法设计与分析复习题目及答案更新完毕开始阅读

x[i]=1; c - =w[i]; }

if (i<=n) x[i]=c/w[i]; }

2.最大子段和: 动态规划算法 int MaxSum(int n, int a[]) {

int sum=0, b=0; 速排序 template

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

if (p

int q=Partition(a,p,r); QuickSort (a,p,q-1); 列问题 Template

void perm(Type list[], int k, int m )

{ 定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。

据此容易设计出二分搜索算法: template

int BinarySearch(Type a[], const Type& x, int l, int r) {

while (l<=r ){ int m = ((l+r)/2); if (x == a[m]) return m;

if (x < a[m]) r = m-1; else l = m+1;

} return -1; }

6、合并排序描述如下: template

void Mergesort(Type a[ ], int left, int right) {

if (left

int i=( left+right)/2; Mergesort(a, left, i ); Mergesort(a, i+1, right);

Merge(a,b, left,i,right);计算机求解问题的步骤:

1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制 2. 算法定义:

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

3.算法的三要素

1、操作2、控制结构3、数据结构

13. 分治法与动态规划法的相同点是:

将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

两者的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。而用分治法求解的问题,经分解得到的子问题往往是互相独立的。

回溯法中常见的两类典型的解空间树是子集树和排列树。 22.请叙述动态规划算法与贪心算法的异同。

共同点:都需要最优子结构性质,都用来求有优化问题。 不同点:

动态规划:每一步作一个选择—依赖于子问题的解。 贪心方法:每一步作一个选择—不依赖于子问题的解。

动态规划方法的条件:子问题的重叠性质。

可用贪心方法的条件:最优子结构性质;贪心选择性质。

动态规划:自底向上求解;贪心方法: 自顶向下求解。可用贪心法时,动态规划方法可能不适用;可用动态规划方法时,贪心法可能不适用。 23. 请说明动态规划方法为什么需要最优子结构性质。

答:最优子结构性质是指大问题的最优解包含子问题的最优解。

动态规划方法是自底向上计算各个子问题的最优解,即先计算子问题的最优解,然后再利用子问题的最优解构造大问题的最优解,因此需要最优子结构. 24. 请说明:

(1)优先队列可用什么数据结构实现 (2)优先队列插入算法基本思想 (3)优先队列插入算法时间复杂度 答:(1)堆。

(2)在小根堆中,将元素x插入到堆的末尾,

然后将元素x的关键字与其双亲的关键字比较, 若元素x的关键字小于其双亲的关键字,

则将元素x与其双亲交换,然后再将元素x与其新双亲的关键字相比,直到元素x的关键字大于双亲的关键字,或元素x到根为止。 (3)O( log n)

26. 在算法复杂性分析中,O、Ω、Θ这三个记号的意义是什么在忽略常数因子的情况

下,O、Ω、Θ分别提供了算法运行时间的什么界 答:

如果存在两个正常数c和N0,对于所有的N≥N0,有|f(N)|≤C|g(N)|,则记作:

f(N)= O(g(N))。这时我们说f(N)的阶不高于g(N)的阶。

若存在两个正常数C和自然数N0,使得当N ≥ N0时有|f(N)|≥C|g(N)|,记为

f(N)=?(g(N))。这时我们说f(N)的阶不低于g(N)的阶。

如果存在正常数c1,c2和n0,对于所有的n≥n0,有c1|g(N)| ≤|f(N)| ≤ c2|g(N)|

则记作 f(N)= (g,(N)

O、Ω、Θ分别提供了算法运行时间的上界、下界、平均 五、算法设计与分析题

1.用动态规划策略求解最长公共子序列问题: (1)给出计算最优值的递归方程。

(2)给定两个序列X={B,C,D,A},Y={A,B,C,B},请采用动态规划策略求出

其最长公共子序列,要求给出过程。

答:1

?当i?0或j?0时?0?c[i,j]??c[i?1,j?1]?1当i,j?0且xi?yi时

?max(c[i,j?1],c[i?1,j])当i,j?0且xi?yi时?(2)

Y A B C B X 0 0 0 0 B 0 0 1 1 1 C 0 0 1 2 2 D 0 0 1 2 2

A 0 1 1 2 2 最长公共子序列:{BC}

2.对下列各组函数f (n) 和g (n),确定f (n) = O (g (n)) 或f (n) =Ω(g (n))

联系合同范文客服:xxxxx#qq.com(#替换为@)