数据结构及算法答案(电子科技大学MOOC)

第一章 绪论

1单选(10分)下面()术语与数据的存储结构无关
A.顺序表
B.链表
C.队列
D.顺序队列

答案:C

2单选(10分)算法分析的目的是()
A.找出数据结构的合理性
B.研究算法的输入与输出的关系
C.分析算法的效率以求改进
D.分析算法的易懂性和文档性

答案:C

3单选(10分)下面程序段的时间复杂度是()

for(i=0;i<n;i++)
	for(j=0;j<m;j++)
        A[i][j]=0;

A.O(n*m)
B.O(n)
C.O(m)
D.O(n+m)

答案:A

4单选(10分)下面程序段的时间复杂度是()

i=s=0;
while(s<n)
{
    i++;
	S+=i;
}

A.O(n)
B.O(s)
c.O(sqrt(n))注释:sqt(n)表示对n开方
D.O(n^2)注释:n2表示求n的平方

答案:C

5单选(10分)下面程序段的时间复杂度是()

i=1;
while(i<=n)
	i=i*3;

A.O(n)
B.O(3*n)
C.On3)注释:n的立方的复杂度
D.O(logn)注释:对数复杂度

答案:D

6判断(10分)数据的关系有逻辑关系和存储关系。其中逻辑关系是进行算法分析和设计需
要考虑与使用的,而存储关系是编程实现的时候需要考虑的,逻辑关系和存储关系之间并
没有关系
A.v
B.X

答案:B

7判断(10分)下面的递归函数时间复杂度是0(1)

int fact(int n)
{
	if(n<=1)return 1;
	else return n*fact(n-1);
}

A.v
B.X

答案:B

8判断(10分)算法和程序都不能无穷的,否则会进入死循环
A.v
B.X

答案:B

9判断(10分)数据包含数据对象,数据对象包含数据元素,数据元素包含数据项。
A.v
B.X

答案:A

10判断(10分)算法可以用不同的语言描述,比如C或者java,所以算法实际上就是程序。
A.v
B.X

答案:B

第二章 2.1 线性表

1、问题:双向链表中有2个指针域pre和next,分别指向直接前区和直接后继,假设有指针p指向链表
中的一个结点,指针q指向一个待插入的结点,现在要求在p的前面插入q所指结点,则正确的插入语句为()

A.p->pre->next=q;q->next=p;q->pre=p->pre;p->pre=q;
B.p->pre=q;q->next=p;p->pre->next=q;q->pre=p->pre;
C.q->next=p;p->next=q;p->pre->next=q;q->next=p;
D.q->pre=p->pre;p->pre->next=q;q->next=p;p->pre=q->next;

答案:A

2单选(10分)在一个具有个链结点的线性链表中,按数据内容查找某一个结点,如果查
找成功,需要平均比较()个结点。
A.(n-1)/2
B.n/2
C.(n+1)/2
D.n

答案:C

3单选(10分)假设按照行优先存储整数数组[9[81,第一个元素a11的首字节地址是
100,每个整数占4个字节,则元素a32的存储地址是()
提示:数组大小是9行8列,第一个位置是1,不是0
A.164
B.144
C.172
D.168

答案:D

4单选(10分)一个栈的入栈序列是a,b,c,d,e,则不可能的出栈输出序列是()
A.decba
B.edcba
C.dceab
D.abcde

答案:C

5单选(10分)当对一个线性表经常进行存取而很少进行插入及删除操作时,采用()
存诸结构最节省时间;如果经常进行插入,删除操作时,则采用()存储结构最节省
时间。
A.链式,顺序
B.顺序,顺序
C.顺序,链式
D.链式,链式

答案:C

6单选(10分)设顺序表L是一个非递减的有序表,下面的哪个算法,能的够将元素x插入L
中,并使仍然有序。

A.L是顺序存储结构

void insert(list *L,elemtype x)
{
	int i=L->length;
	while(i>=1)
    {
		if(X<L->data[i]){L->data[i+1]=L->data[i];--i;}
		L->data[i]=x;
    }
}

B.
//L是顺序存储结构

void insert(list *L,elemtype x)
{
	int i=L->length-1;
	while(i>=0)
    {
		if(X<L->data[i]){L->data[i+1]=L->data[i];--i;}
	}
	L->data i=x;
	L->length+=1;
}

C.//L是顺序存储结构

void insert(list *L,elemtype x)
{
	int i=1;
	while(i<=L->length)
	{
		if(x>L->data[i])i++;
		else {L->datai=x;}
    }
}

D.//L是顺序存储结构

void insert(list *L,elemtype x)
{
	int i=1;
	while(i<=L->length)
	{
		if(X>L->data[i]){L->data[i+1]=L->data[i];i++;}
		else {L->data[i]=x;break;}
	}
}

答案:B

7单选(10分)已知数据3,4,-2,0,8存储在顺序存储结构中,编程实现删除x的操作为()
提示:数据从顺序存储结构的第0个位置开始存储

A.

void del(SqList L,elemtype x)
int i=0:
while(i<L.length)
if(L.data[i]!=x)
i++
else break;
while(i<L.length-1)
L.data[i]=L.data[i+1];i++;)
L.length–;
}
B.

void del(SqList L,elemtype x)
{
int i=L.length;
while(i>0
{
if(x!=L.data[i])L.data[i-1]=L.data[i];
i–
}
C.

void del(SqList L,elemtype x)
int i=0:
while(i<L.length)
if(x==L.data[i])L.data[i]=-1;
i++;
D.

void del(SqList L,elemtype x)
int i=0,bfind=0;
while(i<L.length-1)
{
if(bfind0 &xL.data[i])bfind=1;
if(bfind)(L.data[i]=L.data[i+1]😉
i++

}

答案:A

8单选(10分)下面程序段的输出结果是()

void main()
{
    Queue Q;
	InitQueue(Q);
	char x='e',y='c'";
	EnQueue(Q,'h');
	EnQueue(Q,'r);
	EnQueue(Q,y);
	DeQueue(Q,x);
	EnQueue(Q,x);
	DeQueue(Q,x);
	EnQueue(Q,'a');
	while(!QueueEmpty(Q))
     {
		DeQueue(Q,y)printf(y);
     }
}
printf(x);

A.hrcha
B.rchah
C.char
D.rcha

答案:C

9单选(10分)当在一个有序的顺序存储表上查找一个数据时,可用折半查找,也可用顺序
查找,但前者比后者的查找速度()
A.大部分情况下快
B.一定快
C.取决于表递增还是递减
D.不一定快

答案:A

10单选(10分)关键字越大,优先级越高。为了更好的为优先级高的顾客服务,银行应该采
用什么存储结构支撑算法?
A.有序数组
B.裤式存储者结构
c.顺序存储结构
D.有序链表

答案:D

第二章 2.2 查找

1单选(10分)已知在长度为的线性表中采用顺序查找,查找成功最好的比较次数是(),查找成功的最坏比较次数是(),查找失败的比较次数是()
A.1,n+1,n+1
B.0,n,n+1
C.1,n,n
D.1,n,n+1

答案:C

2单选(10分)长度为的有序顺序表采用折半查找,查找成功的最少次数为(),查找
成功的最大次数为(),查找失败的最大次数为(),所以折半查找的最坏时间复
杂度为()
A.1,logn,logn,O(logn)
B.1,n,n,O(n)
C.1,logn,n,O(n)
D.1,n,logn,O(logn)

答案:A

3单选(10分)查找表如下分组3,7,1,8,15),(22,43,18,45),(60,58,82,77,62)
(90,88,99,100),则索引表为(),查找58需要比较()次
A.(15,1),(45,6),(82,10),(100,15) 7
B.(22,1),(60,6),(88,10),(101,15) 7
C.(15,1),(45,6),(82,10),(100,15),NULL,19) 5
D.(15,1),(45,6),(82,10),(100,15) 5

答案:C

4单选(10分)查找表32,45,18,77,5,23,44,19,7,3,哈希函数为H(key)=key%5,采用链地址
法解决冲突的八SL(成功))=(),采用表长为11的线性探测再散列开放地址法的
ASL(成功)=(),
A.18/10,32/10
B.18/5,32/10
C.18/5,31/10
D.18/10,31/10

答案:A

5单选(10分)哈希函数H(k)=k%11,采用开放地法的平方探测再散列(di=1,4,9,16,…)
解决冲突,输入关键字(9,31,26,19,1,13,2,11,27,16,21),表长为13,建立的哈希表为
(),ASL(成功)=()

A

地址0123456789101112
关键字1111322627161993121
查找次数11121121122

ASL(成功) = 15/11

B

地址0123456789101112
关键字1111322627161993121
查找次数11121121112

ASL(成功) = 15/12

C

地址0123456789101112
关键字1111322627161993121
查找次数11121121112

ASL(成功) = 15/11

D

地址0123456789101112
关键字1111322627161993121
查找次数11121121122

ASL(成功) = 15/12

答案:A

第二章 2.3 排序

1单选(10分)请对下列数据13,24,7,1,8,9,11,56,34,51,2,77,5,进行
简单插入排序,冒泡排序(每趟大数冒到后面)和选择排序,2趟后的排序结果为:
()
A.2趟后的简单插入排序序列为:7,13,1,24,8,9,11,56,34,51,2,77,5
2趟后的冒泡月排序为:1,7,8,9,11,13,24,34,2,51,5,56,77
2趟后的选择排序为:1,2,7,13,8,9,11,56,34,51,24,77,5
B.2趟后的简单插入排序序列为:7,13,1,24,8,9,11,56,34,51,2,77,5
2趟后的冒泡排序为:1,7,8,9,11,13,24,34,2,5,51,56,77
2趟后的选择序为:1,2,7,13,8,9,11,56,34,51,24,77,5
C.2趟后的简单插入排序序列为:7,13,24,1,8,9,11,56,34,51,2,77,5
2趟后的冒泡序为:7,1,8,9,11,13,24,34,2,51,5,56,77
2趟后的选择排序为:1,2,7,13,8,9,11,56,34,51,24,77,5
D.2趟后的简单插入排序序列为:7,13,1,24,8,9,11,56,34,51,2,77,5
2趟后的冒泡排序为:1,7,8,9,11,13,24,34,2,51,5,56,77
2趟后的选择排序为:1,2,5,7,13,8,9,11,56,34,51,24,77

答案:C

2单选(10分)已知输入数据13,24,7,1,8,9,11,56,34,51,2,77,5,请采
用2路归并递归排序算法进行排序,2趟排序后的结果为()
A.1,7,13,24,8,9,11,34,51,56,2,5,77
B.13,7,24,1,8,9,11,56,34,51,2,5,77
C.13,24,1,7,8,9,11,34,56,51,2,77,5
D.7,13,24,1,8,9,11,34,51,56,2,5,77

答案:A

3单选(10分)已知输入数据13,24,7,1,8,9,11,56,34,51,2,77,5,请采
用快速归排序算法进行排序,其中枢纽采用3者取中法,2趟排序后的结果为()
注意:答案中的括号表示快排中的分组
○A.((2,5,1),(7,8),9)),11,((13,34,24),51,(77,56))
B.((1,2),5,(7,8,9,11)),13,((24),34,(56,77,51))
C.((1,2),5,(13,8,9,7)),11,((24),34,(51,77,56))
D.((2,5,1),7,(8,9)),11,((13,34,24),51,(77,56))

答案:D

4单选(10分)已知输入数据13,24,7,1,8,9,11,56,34,51,2,77,5,增量
序列d=5,3,1,请采用希尔排序算法进行排序,2趟排序后的结果为()
A.2,5,11,1,8,9,7,24,34,13,51,77,56
B.1,7,8,9,13,24,11,34,51,2,5,56,77
C.1,7,5,2,8,9,24,11,34,51,13,77,56
D.2,11,5,1,8,9,24,7,34,51,13,77,56

答案:C

5单选(10分)已知输入数据1,2,8,5,9,11,34,56,51,77,请分析数据,采用
()排序算法效率最低
A.三者取中法作为枢纽的快速排序
B.冒泡排序
C.选择排序
D.简单插入排序

答案:C

第三章 递归和分治

1单选(10分)已知某递归算法的复杂度为:T(n)=2T(/2)+4,则求解该递归式的解为:
A.T(n)=O(1
B.T(n)=O(n)
C.T(n)=O(nlogn)
D.T(n)=O(n^2)

答案:B

2单选(10分)分治法所能解决的问题一般具有以下几个特征:
1.该问题的规模缩小到一定的程度就可以容易地解决;
2.___
3.利用该问题分解出的子问题的解可以合并为该问题的解:
4.该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
A.最优值
B.最佳答案
C.最优解
D.最优子结构

答案:D

3单选(10分)求一个数据序列的逆序数量不可以通过
排序中增加1个计数器实
现。
提示:一个排列含有逆序的个数称为这个排列的逆序数。例如排列263451含有
8个逆序(2,1),(6,3),(6,4),(6,5),(6,1),(3,1),(4,1),(5,1),因此该排列的逆序数就是
8。
A.简单插入
B.冒泡
c.归并
D.树形选择排序

答案:D

4单选(10分)下面()说法是正确的
八.所有递归程序都可以转换为非递制归程序,且递制归程序运行速度更快
B.递归程序可以把递归出口写在递归关系的后面
C.大部分递归程序可以转换为非递制归程序,非递制归程序运行速度更快。
D.所有问题都可以写递归程序

答案:C

5单选(10分)已知求一组数据连续若干数和的最大值采用分治方法得到Olog)的时间复
杂度,请完成下面分治法求解的代码:

/************************************************************************/
 /*    分治法
     最大和子数组有三种情况:
     1)A[1...mid]
     2)A[mid+1...N]
     3)A[i..mid..j]
 /************************************************************************/
 //find max crossing left and right
 int Find_Max_Crossing_Subarray(int arr[], int low, int mid, int high)
 {
     const int infinite = -9999;
     int left_sum = infinite;
     int right_sum = infinite;
 
     int max_left = -1, max_right = -1;
 
     int sum = 0; //from mid to left;
     for (int i = mid; i >= low; i --) {
         sum += arr[i];
         if (sum > left_sum) {
             left_sum = sum;
             max_left = i;        
         }
     }
     sum = 0;  //from mid to right
     for (int j = mid + 1; j <= high; j ++) {
         sum += arr[j];
         if (sum > right_sum) {
             right_sum = sum;
             max_right = j;
        }
     }
     return (left_sum + right_sum);
 }
 
 int Find_Maximum_Subarray(int arr[], int low, int high)
 {
     if (high == low) //only one element;
         return arr[low];
     else {
         int mid = (low + high)/2;
         int leftSum = Find_Maximum_Subarray(arr, low, mid);
         int rightSum = Find_Maximum_Subarray(arr, mid+1, high);
         int crossSum = Find_Max_Crossing_Subarray(arr, low, mid, high);
 
        ——————————完成这里的代码——————————————————
     }
 }

A.

if(leftSum>rightSum>crossSum) return leftSum;

if(rightSum>leftSum>crossSum) return rightSum;

if(crossSum>leftSum>rightSum)return crossSum;

B.

if(leftSum>rightSum)

{

    if(leftSum>crossSum)return leftSum;

}

else

{

  if(rightSum>crossSum)return rightSum;

}


C.


if(leftSum>rightSum && leftSum>crossSum) return leftSum;

if(rightSum>leftSum && rightSum>crossSum) return rightSum;

if(crossSum>leftSum && crossSum>rightSum)return crossSum;

D.


int tmp=(leftSum>rightSum?leftSum:rightSum;

return (tmp>crossSum?tmp:crossSum);

答案:D

第四章 树与二叉树

1单选(10分)已知由关键字序列17,28,36,54,30,27,94,15,21,83,40得到的二叉排序树的
查找成功的平均查找长度ASL为(
注意:结果用最简分数形式
A.6
B.39/11
C.39/10
D.40/6

答案:B

2单选(10分)已知由关键字序列17,28,36,54,30,27,94,15,21,83,40得到的平衡二叉树AVL
的查找成功的平均查找长度ASL为)
注意:结果用最简分数形式
A.34/11
B.30/11
C.3
D.30/4

答案:C

3单选(10分)已知由关键字序列17,28,36,54,30,27,94,15,21,83,40构造小堆,按照层
序输出的关键字序列为:(
注意:用空格分隔输出序列
A.1715272130369454288340
B.1517212728303640548394
C.1517272130369454288340
D.1517272830369454218340

答案:C

4单选(10分)已知由一组字符组成的字符串,其中各个字符的访方问次数分别为
17,28,36,54,30,27,94,15,21,83,40,请对该字符串中的字符进行最优编码,其最优编码的
带权路径长度为()
A.1433
B.445
C.1479
D.1447

答案:D

5单选(10分)3个不同的结点,可以构成()颗不同的二叉树
A.1
B.4
c.5
D.7

答案:C

6单选(10分)已知由关键字序列17,28,36,54,30,27,94,15,21,83,40得到的二叉排序树,
删除关键字36的结点的最佳操作是()】
A.直接删除关键字结点36
B.用左子树的最大关键字结点36替换给关键字为36的结点
C.用右子树的最小关键字40替换关键字结点36
D.直接用不含有关键字36的输入序列重新构造新的二叉排序树

答案:C

7单选(10分)如果一颗二叉树具有10个度为2的结点和5个度为1的结点,则有()个
叶子结点
A.9
B.11
C.15
D.14

答案:B

8单选(10分)假设完全二叉的树根为第1层,树中第10层有5个叶子结点,则完全二叉
树最多有()个结点。
A.2047
B.2048
C.2037
D.2038

答案:C

9单选(10分)二叉树的先序和中序遍历序列相同,则此二叉树为()
A.任结点无左子树
B.任结点无右子树
C.根结点无左子树
D.根结点无右子树

答案:A

10单选(10分)一棵完全二叉树上有1001个结点,其叶子结点的个数是(
A.250
B.500
c.254
D.501

答案:D

11单选(10分)二叉树的先序序列是EFGK,中序序列为HFIEJKG,该二叉树右子树
的根是(
A.E
B.F
c.G
D.H

答案:C

12单选(10分)下列四个序列中,哪一个是堆(
)
A.75,65,30,15,25,45,20,10
B.75,65,45,10,30,25,20,15
C.75,45,65,30,15,25,20,10
D.75,45,65,10,25,30,20,15

答案:C

13单选(10分)
在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后
顺序(
A.都不相同
B.完全相同
C.先序和中序相同,而与后序不同
D.中序和后序相同,而与先序不同

答案:B

14单选(10分)二叉排序树的()结果是一个关键字的递增有序序列
A.先序遍历
B.中序遍历
C.后序遍历
D.层次遍历

答案:B

15单选(10分)给定权值总数有个,其哈夫曼树的结点总数是(
A.不确定
B.2n
C.2n+1
D.2n-1

答案:D

第五章 图论与贪心算法

1单选(10分)要连通具有个顶点的无向图,至少需要()条边
A.n*(n-1)
B.n-1
C.n+1
D.n

答案:B

2单选(10分)从顶点1开始,用prim算法按次序输出最小生成树的边()

uTools_1657021249195 A.(5,6)(4,5)(2,4)(1,2)(2,3) B.(1,2)(2,3)(3,6)(6,5)(5,4) c.(1,2)(2,4)(4,5)(5,6)(6,3) D.(1,2)(2,3)(2,4)(4,5)(5,6)

答案:C

3单选(10分)用kruscal算法,按顺序输出最小生成树的各边()
uTools_1657021249195
A.(5,6)(4,5)(1,2)(2,3)(3,6)
B.(5,6)(4,5)(2,4)(1,2)(6,3)
C.(5,6)(4,5)(2,5)(1,2)(2,3)
D.(1,2)(2,4)(4,5)(5,6)
(2,3)

答案:B

4单选(10分)利用dijkstra算法计算从节点1到其他节点的最短路径,算法执行到下图状态
之后,接下来应该把哪个节点添加到探索集中?()

A.结点6
B.结点7
c.结点8
D.结点5

答案:D

5单选(10分)程序存储问题
问题描述:假设有n个程序(1,2,3.,)要存放在长度为L的磁带上。程序存放在磁带
上的长度是,1≤i≤n.
程序存储问题要求确定这个程序在磁带上的一个存储方案,使得尽量快地能够在磁带
上存储尽可能多的程序。
数据输入:第一行读入2个正整数,分别表示文件个数和磁带程度L:第二行读入n个正
整数,分别表示个文件存储在磁带上的长度。
输出:输出1个整数数为满足要求的最多存储的文件数
输入示例:
650
231388020
输出:
6
下面的选项正确的是()
A.递归法,将第个程序放到磁带和不放到磁带,各是2种不可能同时出现的方法,比较
这2种方法看哪一种放到磁带的程序数量更多,就洗择哪一种放法。
B.穷举法,枚举所有的存放程序到磁带且不会空间不够的情况,其中最大的程序数量就
是答案。
c.先如果uTools_1657021427173

则将所有程序都可以放入磁带,因此能够存放的最多程序数量
mi<I
i=1
为n。
否则,将程序按照在磁带上的存储长度非递减排序,假设排序后,第个程序的长度
为m4,其中1≤i≤n且m;-1≤m≤mi+1。则采用贪心算法,将程序长度最小
的程序依次存放到磁带上,直到第k个磁带不能存储到磁带,则结束。磁带能的够存放
的程序个数为k-1(k<n),满足:uTools_1657021492713
D
将程序按照在磁带上的存储长度非递减排序,假设排序后,第个程序的长度为,其
中1≤i≤n且m,-1≤m1≤mi+1。则采用贪心算法,将程序长度最小的程序
依次存放到磁带上,直到第k个磁带不能存储到磁带,则结束。磁带能够存放的程序
个数为k-1(k<n),满足:uTools_1657021492713

答案:C

6单选(10分)某一工程作业的网络图如图所示,其中箭头表示作业,箭头上的数字表示
完成作业所需的天数。箭头前后的圆圈表示事件,圆圈中的数字表示事件的编号。用事
件编号的序列(例如0-3-4-8-10-11)表示进行作业的路径。其中0表示工程开始,11表示
工程的结束。求(1)完成此工程的关键路径:(2)完成此工程所需的最少天数
uTools_1657021679183
A.(1)关键路径上的事件为:0-1-5-6-9-11
(2)18天
B.
(1)关键路径上的事件为:0-2-6-9-11
(2)20天
C.(1)关键略径上的事件为:0-2-7-10-11
(2)16天
D.(1)关键路径上的事件为:0-2-7-9-11
(2)18天

答案:B

7单选(10分)求城市a到其他城市的最短距离及路线
uTools_1657021741525
A.a到其他城市的最短距离及路径分别为:
(1)a->b:23(2)a->c:18(3)a->c->e:30(4)a->c->e->d:36
(5)a->c->f:54(6)a->c->e->g:55
B.a到其他城市的最短距离及路径分别为:
(1)a->b:23(2)a->c:18(3)a->c->e:30(4)a->c->e->d:36
(5)a->c->e->f:39(6)a->c->e->g:55
c.a到其他城市的最短距离及路径分别为:
(1)a->b:23(2)a->c:18(3)a->b->e:32(4)a->c->e->d:36
(5)a->c>e->f:39(6)a->c->e->g:55
Φ.a到其他城市的最短距离及路径分别为:
(1)a->b:23(2)a->c:18(3)a->b->e:32(4)a->c->e->d:36
(5)a->c->f:54(6)a->c->e->g:55

答案:B

8单选(10分)汽车加油问题
问题描述:一辆汽车加满油可以行驶n公里(k)。旅途中有若干加油站。设计1个有效算
法,指出应该在哪些加油站加油,使得沿途加油次数最少。
数据输入:第一行2个正整数n和Kk,表示汽车加满油可以行驶公里,沿途有k个加油站。
第二行有k+1个正整数,表示第个加油站和第+1个加油站的距离。第0个加油站是出发
地,汽车已经加满油,第k+1个加油站代表日的地。
输出:输出1个正整数表示最少加油次数
输入示例:
77
12345166
输出结果:
4
下面说法不正确的是()
A.采用穷举法,把海一种加油方法都枚举出来,看是否能够行驶到下一个加油站,不能
则排除,否则就是一个可行解。
B.采用贪心算法,每一个加油站都去加油,使得油箱出发的时候都是满的,即使加油站
隔的很远,比如大于公里,也能够开到下一个加油站。
C.采用排除法,只要刺余的油不足以行驶到下一个加油站,说明继续行驶做不到,不能
把本加油站排除了,因此需要加油
D.采用贪心算法:最远距离优先。也就是满足汽车有油的情况下行驶尽可能远的距离。
首先保证每2个加油站之间的距离<=,否测汽车没有到下一个加油站就没有油了,
不能完成旅游。
然后计算汽车从出发地开始的行驶的累计路程,只要累计路程小于,则继续开到下
一个加油站,一旦行驶里程>,则在上1个加油站必须动加满油,并加油次数妙加1次。
然后以上一个加油站为其实出发地开始用同样的方法进行累计路程,直到到达目的
地。

答案:B

9单选(10分)最小生成树除了prim和kuscal算法,还有没有其他的算法?
A.还有其他算法,有的算法赴比pim算法好,有的算法比kuscal算法好。
B.没有了
c.还有其他算法,包括破圈法在内的其他最小生成树算法,效率没有比pim或者krusca
算法更好。prim算法适合稠密图,kurscal算法适合稀疏图。
D.还有破圈法,就是把图里面的包含圈的最大边删除,直到没有圈存在。这个算法效率
比上面两个算法更好。

答案:C

10单选(10分)下图不是合法的拓扑排序有()
uTools_1657021818062
A.ABDCEF
B.ADCBEF
C.ABDECF
D.ACDBEF

答案:D

第六章 动态规划

1单选(10分)动态规划与分治递归的最大区别()
A.分治递归的子问题如果有重叠,采用动态规划比分治递归求解效率更高
B.分治递归都能够用动态规划的自底向上的方法求解,而且能够提高时间复
杂度
C.动态规划也是一种分治递制归,但是可以采用从底向上的方法求解,效率更

D.动态规划不是递归问题

答案:A

2单选(10分)找零钱问题用
()算法
A.分治递归,能够得到全局最优解
B.动态规划,能够得到全局最优解
C.贪心算法,不能得到全局最优解
D.贪心算法,能够得到全局最优解

答案:C

3单选(10分)关于背包问题,正确的是()
A.背包用贪心算法求解,部分背包用动态规划求解
B.背包问题都用动态规划求解
C.背包用动态规划求解,部分背包用贪心算法求解
D.背包问题都用贪心算法求解

答案:C

4单选(10分)用动态规划的前提条件()
A.递归问题都可以用动态规划求解
B.能够分解为子问题
C.能够分解为相似子问题,且子问题有重叠
D.能够分解为子问题,且子问题有重叠

答案:C

5
单选
(10分)考虑下面的整数线性规划问题:
uTools_1657022021359
x是非负整数,且1≤i≤n
下面()是正确成解过程

八.可以用贪心算法求解。按照i递增排序,依次选择第i个物体,只要选择的物体的总值
小于b即可
B.首先给出该问题的子问题描述:
uTools_1657022074681
的最优值为m(i,j),也就是m(i,j)表示在背包容量是,可以选择物品1,2,…,…的时候背包
问题的最优值。
由背包问题的最优子结构性质,可以建立计算m心,j)的递归关系式如下:
uTools_1657022108303
其中初始值,m(0,j)=m(i,0)=0,m(i,j)=-∞,j<0
c.首先给出该问题的子问题描述:
uTools_1657022074681
的最优值为m(心,j),也就是m(心,j)表示在背包容量是,可以选择物品1,2,,的时候背包
问题的最优值。
由背包问题的最优子结构性质,可以建立计算(,j)的递归关系式如下:
uTools_1657022108303
其中初始值,m(0,j)=m(1,0)=0,m,j)=-0o,j<0
D.首先给出该问题的子问题描述:

uTools_1657022074681在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

的最优值为),也就是m表示在背包容量是的时候背包问题的最优值。
由背包问题的最优子结构性质,可以建立计算()的递归关系式如下:
uTools_1657022108303

答案:C

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值