1、求解以下递归方程:
T(1)=1
T(n)=T(n-1)+n 当 n>1
2、采用特征方程方法求解以下递归方程:
H(0)=0
H(1)=1
H(2)=2
H(n)=H(n-1)+9H(n-2)-9H(n-3) 当 n>2
3、数列的首项 a1=0,后续奇数项和偶数项的计算公式分别为
a2n=a2n-1+2,a2n+1=a2n-1+a2n-1,写出计算数列第n 项的递归算法。
4.若使用贪心算法对最优化问题能求出最优解,则该问题必需满足( )性质和( )性质。
5.下列问题不能用贪心算法解决的是( )
A. 活动安排
B. 连续背包
C源点最短路径
D. 0-1背包问题
6.若要将n个城市之间原有的公路改造为高速公路,这些城市之间原有公路网如下图所示,每条边上的数字表示高速公路的改造成本(单位:10亿元)。如何以最低的成本来构建高速公路网,使得任意两个城市之间都有高速公路相连?首先说明采用何种方法求解,然后给出求解的具体步骤。
7.【活动安排问题】
设有n个活动的集合E={1,2,……,n},其中每个活动都要求使用同一资源,如演讲会场,而在同一时间只允许一个活动使用这一资源。每个活动i都有使用的起始时间si和结束时间fi,且si<fi。问:如何安排可以使这间会场的使用率最高。 如果选择了活动i ,则它在区间[si,fi)内占用资源。若区间[si,fi)与区间[sj,fj)不相交,则称活动i与活动j是相容的。活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合。
void plangreedy(int n,int s[],int f[],int a[])
{ int i,j;
( );
j=1;
for( i=2;i<=n;i++)
if ( )
{ a[i]=1;
( );
}
else a[i]=0;
}
8.【删数字游戏】
试设计一算法,满足以下要求:输入一高精度的正整数M,去掉其中任意S个数字后使得剩下的数最小。
例如:M=50267539,S=4,结果为239
9.
10.n=6,3,1,6,9,2,8
1,2,3,4,5,6
6,5,4,3,2,1
分析递归插入排序算法在最好、最坏情形下的时间复杂度。
11.归并排序
1. template<class Type>
2. void MergeSort(Type a[ ],int left,int right)
3. {
4. if(left<right) /*至少有2个元素*/
5. {
6. int i=(left+right)/2; /*取中点*/
7. MergeSort(a,left,i);
8. MergeSort(a, i+1, right);
9. Merge(a,b,left,i,right);/*归并到辅助数组b[ ]*/
10.Copy(a,b,left,right); /*将数组b[ ]中已排好序的元素复制回原数组a[ ]中*/
11.}
12.}
12.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
13.将一维数组中的5个关键字:5,8,1,7,9用递归插入排序算法使之成为一个从小到大的有序数组1,5,7,8,9需要进行 次关键字比较。
A 4 B 6 C 8 D 10