- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
湖南科技学院二○ 学期期末考试
信息与计算科学专业 级《算法设计与分析》 试题
考试类型:开卷 试卷类型:C卷 考试时: 120分钟
题号
题号
得分
一
二
三
四
五
总分
统分人
阅卷人
复查人
一、填空题(每小题3分,共计30分)
用O、Ω和θ表示函数f与g之间的关系 。
f?n??nlogn g?n??logn
?1, n?1
算法的时间复杂性为f(n)?? ,则算法的时间复杂性的阶
?8f(3n/7)?n, n?2
* 。
快速排序算法的性能取决于 。
算法是 。
在对问题的解空间树进搜的方法中,一个活结点最多有一次机会成为活结点的是 。
在算法的三种情况下的复杂性中,可操作性最好且最有实际价值的是 情况下的时间复杂性。
大Ω符号用来描述增长的下限,这个下限的阶越 ,结果就越有价值。。
是问题能用动态规划算法求解的前提。
贪心选择性质是指
。
回溯法在问题的解空间树中,按 策,从根结点出发搜解空间树。
二、简答题(每小题10分,共计30分)
试述回溯法的基本思想及用回溯法解题的步骤。
有8个作业{1,2,…,8}要在由2台机器M1和M2组成的水线上完成加工。每个作业加工的顺序是先在 M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为:
M1
10
2
8
12
6
9
4
14
M2
5
7
1
15
16
3
11
13
作业
1
2
3
4
5
6
7
8
给出一个最优调方案,使得从第一个作业在机器 M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少,并计算所需的最少时间。
答:
最优调方案为
所需的最少时间为:
根据优先队式分支限界法,求下图中从 v1点到v9点的单源最短径,请画出求得最优解的解空间树。要求中间被舍弃的结点用×标记,获得中间解的结点用单圆圈○
框起(如○v2),最优解用双圆圈◎框起。
v21
v2
1
v5
2
v8
6
2
6
3
3
v1
3
v3
6
10
1
4
v9
4
2
v7
2
v4
10
v6
三、算法填空(每空2分,共计10分)
设R={r,r,...,r}是要进排的 n个元素,其中元素r,r,...,r可能相同,
1 2 n 1 2 n
试设计一个算法,出 R的所有同排,并给出同排的总数。算法如下,填写缺失的语。
templatetypenameTypevoidSwap(Typea,Typeb){
Typet=b;
; //1a=t;
}
templatetypenameType
boolok(TypeR[],intk,inti){if(ik)
for(intt=k;ti;t++)
if( ) //2returnfalse;
returntrue;
}
templatetypenameType
voidPerm(TypeR[],intk,intn,intsum){//n为元素个数,sum记录同排的总数
if(k==n){
; //3for(inti=1;i=n;i++)
cout ; //4coutendl;
}else{
for(inti=k;i=n;i++)if(ok(R,k,i)){
Swap(R[k],R[i]);
Perm( ); //5Swap(R[k],R[i]);
}
}
}
四、算法设计(共计15分)
设有n个程序{1,2,3...,n}要存放在长为 L的磁带上。程序i存放在磁带上的长
是 Li,1≤i≤n。
是 Li,1≤i≤n。程序存储问题要求确定这n个程序在磁带上的一个存储方案,使
得能够在磁带上存储尽可能多的程序,在保证存储最多程序的前提下还要求磁带的用
达到最大。
给出求解存储最多程序的算法,并证明算法的正确性;
给出求解使磁带的用达到最大的方案的算法思。 。
五、算法设计(共计15分)
通过键盘输入一个高的正整数 n(n的有效位数≤240),去掉其中任意s个数字后,剩下的数字按原左右次序将组成一个新的正整数。对给定的n和s,寻找一种方案,使得剩下的数字组成的新最小。
如输入n为178543,s为4,结果为13
⑴简述你的算法思;
⑵给出算法(用C++描述)。注:正整数n存于字符中,:stringn=178543;
n.at(0) //返回字符 n的第1个字符
n.erase(2,3) //删除n中引为 2开始的3个字符
解:
⑴算法思
⑵算法
stringMinNum(s
文档评论(0)