算法部分作业答案

合集下载

des作业答案和RSA作业

des作业答案和RSA作业

1.第一题DE 2C 3E 541101 1110 0010 1100 0011 1110 0101 0100A0 9B 02 5B1010 0000 1001 1011 0000 0010 0101 1011经过置换1 左移一位后变成c1和d1 0011000 01100011 1-8 1100010 00010010 9-16 0100010 00101101 17-24 1101010 0100 25-281110010 11001010 29-36 1000011 00011111 37-44 1110100 01001111 45-52 1111101 1011 53-56经置换2变成k1(12 A6 D1 C7 AD 7A)c1和d1继续左移1位变成c2和d2 00010010 1100011010100110 0010010011010001 01011010100011000111 1001010010101101 0011111001111010 100111110111经置换2变成k2(A8 68 15 C5 D7 9B)c2和d2继续左移2位后变成c3和d3 10101000 0001100001101000 1001000100010101 01101010001111000101 0101000011010111 1111101010011011 011111011110经置换2变成k3(05 2F 28 DF 16 69)0000010100101111001010001101111100010110011010012.在DES 算法中,S2盒的输入为101101,求S2盒输出 01004.1 在使用RSA 的公钥体制中,已截获发给某用户的密文为c=10,该用户的公钥pk = 5, n=35,那么明文m 等于多少?为什么能根据公钥可以破解密文?解:n=p*q (p 和q 都是素数),n=35 故解出p=5 ,q=7 ;()()()1124n p q ϕ=--=;又因为()1mod pk sk n ϕ*≡,而pk=5 故可解出sk=5;mod sk m c n ==105 mod 35=5 。

算法导论课程作业答案

算法导论课程作业答案

算法导论课程作业答案Introduction to AlgorithmsMassachusetts Institute of Technology 6.046J/18.410J Singapore-MIT Alliance SMA5503 Professors Erik Demaine,Lee Wee Sun,and Charles E.Leiserson Handout10Diagnostic Test SolutionsProblem1Consider the following pseudocode:R OUTINE(n)1if n=12then return13else return n+R OUTINE(n?1)(a)Give a one-sentence description of what R OUTINE(n)does.(Remember,don’t guess.) Solution:The routine gives the sum from1to n.(b)Give a precondition for the routine to work correctly.Solution:The value n must be greater than0;otherwise,the routine loops forever.(c)Give a one-sentence description of a faster implementation of the same routine. Solution:Return the value n(n+1)/2.Problem2Give a short(1–2-sentence)description of each of the following data structures:(a)FIFO queueSolution:A dynamic set where the element removed is always the one that has been in the set for the longest time.(b)Priority queueSolution:A dynamic set where each element has anassociated priority value.The element removed is the element with the highest(or lowest)priority.(c)Hash tableSolution:A dynamic set where the location of an element is computed using a function of the ele ment’s key.Problem3UsingΘ-notation,describe the worst-case running time of the best algorithm that you know for each of the following:(a)Finding an element in a sorted array.Solution:Θ(log n)(b)Finding an element in a sorted linked-list.Solution:Θ(n)(c)Inserting an element in a sorted array,once the position is found.Solution:Θ(n)(d)Inserting an element in a sorted linked-list,once the position is found.Solution:Θ(1)Problem4Describe an algorithm that locates the?rst occurrence of the largest element in a?nite list of integers,where the integers are not necessarily distinct.What is the worst-case running time of your algorithm?Solution:Idea is as follows:go through list,keeping track of the largest element found so far and its index.Update whenever necessary.Running time isΘ(n).Problem5How does the height h of a balanced binary search tree relate to the number of nodes n in the tree? Solution:h=O(lg n) Problem 6Does an undirected graph with 5vertices,each of degree 3,exist?If so,draw such a graph.If not,explain why no such graph exists.Solution:No such graph exists by the Handshaking Lemma.Every edge adds 2to the sum of the degrees.Consequently,the sum of the degrees must be even.Problem 7It is known that if a solution to Problem A exists,then a solution to Problem B exists also.(a)Professor Goldbach has just produced a 1,000-page proof that Problem A is unsolvable.If his proof turns out to be valid,can we conclude that Problem B is also unsolvable?Answer yes or no (or don’t know).Solution:No(b)Professor Wiles has just produced a 10,000-page proof that Problem B is unsolvable.If the proof turns out to be valid,can we conclude that problem A is unsolvable as well?Answer yes or no (or don’t know).Solution:YesProblem 8Consider the following statement:If 5points are placed anywhere on or inside a unit square,then there must exist two that are no more than √2/2units apart.Here are two attempts to prove this statement.Proof (a):Place 4of the points on the vertices of the square;that way they are maximally sepa-rated from one another.The 5th point must then lie within √2/2units of one of the other points,since the furthest from the corners it can be is the center,which is exactly √2/2units fromeach of the four corners.Proof (b):Partition the square into 4squares,each with a side of 1/2unit.If any two points areon or inside one of these smaller squares,the distance between these two points will be at most √2/2units.Since there are 5points and only 4squares,at least two points must fall on or inside one of the smaller squares,giving a set of points that are no more than √2/2apart.Which of the proofs are correct:(a),(b),both,or neither (or don’t know)?Solution:(b)onlyProblem9Give an inductive proof of the following statement:For every natural number n>3,we have n!>2n.Solution:Base case:True for n=4.Inductive step:Assume n!>2n.Then,multiplying both sides by(n+1),we get(n+1)n!> (n+1)2n>2?2n=2n+1.Problem10We want to line up6out of10children.Which of the following expresses the number of possible line-ups?(Circle the right answer.)(a)10!/6!(b)10!/4!(c) 106(d) 104 ·6!(e)None of the above(f)Don’t knowSolution:(b),(d)are both correctProblem11A deck of52cards is shuf?ed thoroughly.What is the probability that the4aces are all next to each other?(Circle theright answer.)(a)4!49!/52!(b)1/52!(c)4!/52!(d)4!48!/52!(e)None of the above(f)Don’t knowSolution:(a)Problem12The weather forecaster says that the probability of rain on Saturday is25%and that the probability of rain on Sunday is25%.Consider the following statement:The probability of rain during the weekend is50%.Which of the following best describes the validity of this statement?(a)If the two events(rain on Sat/rain on Sun)are independent,then we can add up the twoprobabilities,and the statement is true.Without independence,we can’t tell.(b)True,whether the two events are independent or not.(c)If the events are independent,the statement is false,because the the probability of no rainduring the weekend is9/16.If they are not independent,we can’t tell.(d)False,no matter what.(e)None of the above.(f)Don’t know.Solution:(c)Problem13A player throws darts at a target.On each trial,independentlyof the other trials,he hits the bull’s-eye with probability1/4.How many times should he throw so that his probability is75%of hitting the bull’s-eye at least once?(a)3(b)4(c)5(d)75%can’t be achieved.(e)Don’t know.Solution:(c),assuming that we want the probability to be≥0.75,not necessarily exactly0.75.Problem14Let X be an indicator random variable.Which of the following statements are true?(Circle all that apply.)(a)Pr{X=0}=Pr{X=1}=1/2(b)Pr{X=1}=E[X](c)E[X]=E[X2](d)E[X]=(E[X])2Solution:(b)and(c)only。

东师21秋学期《算法分析与设计》在线作业1(答案)

东师21秋学期《算法分析与设计》在线作业1(答案)

东师21秋学期《算法分析与设计》在线作业1(答案)一、单选题1. 字符串”China Beijing”的长度是()A.12B. 13C. 14D. 15正确答案. B2. 一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树的总结点数为()。

A.219B. 221C. 229D. 231正确答案. A3. 栈和队列的共同点是()A.都是先进先出B. 都是先进后出C. 只允许在端点处插入和删除元素D. 没有共同点正确答案. C4. 使用简单选择排序法对n个数进行排序要进行()趟比较。

A. NB. n-1C. n+1D. 不一定正确答案. B5. 下面给出的四种排序方法中,排序过程中的比较次数与排序方法无关的是()。

A. 选择排序法B. 插入排序法C. 快速排序法D. 堆积排序法正确答案. A6. 图中有关路径的定义是()。

A. 由顶点和相邻顶点序偶构成的边所形成的序列B. 由不同顶点所形成的序列C. 由不同边所形成的序列D. 上述定义都不是正确答案. A7. 执行memset(s,'a',4)后,s的值为()。

A. "aaaa"B. "a4"C. "4a"D. "eeee"正确答案. A8. 一个算法的评价主要从空间复杂度和()来考虑。

A. 时间复杂度B. 算法有效性C. 算法有穷性D. 算法可读性正确答案. A9. 下面的时间复杂度按数量级递增的顺序排列,正确的是注释从功能上可以分为()。

A. 平方阶O(n2),对数阶O(log2n),指数阶O(2n)B. 线性对数阶O(nlog2n),指数阶O(2n),立方阶O(n3)C. 常数阶O(1),线性阶O(n),指数阶O(2n)D. k次方阶O(nk),指数阶O(2n),对数阶O(log2n)正确答案. C10. ()嵌在源程序体中,用于描述其后的语句或程序段做什么工作,也就是解释下面要做什么,或是执行了下面的语句会怎么样。

算法分析与设计作业及参考答案样本

算法分析与设计作业及参考答案样本

《算法分析与设计》作业( 一)本课程作业由两部分组成。

第一部分为”客观题部分”, 由15个选择题组成, 每题1分, 共15分。

第二部分为”主观题部分”,由简答题和论述题组成, 共15分。

作业总分30分, 将作为平时成绩记入课程总成绩。

客观题部分:一、选择题( 每题1分, 共15题)1、递归算法: ( C )A、直接调用自身B、间接调用自身C、直接或间接调用自身 D、不调用自身2、分治法的基本思想是将一个规模为n的问题分解为k个规模较小的字问题, 这些子问题: ( D )A、相互独立B、与原问题相同C、相互依赖D、相互独立且与原问题相同3、备忘录方法的递归方式是:( C )A、自顶向下B、自底向上C、和动态规划算法相同D、非递归的4、回溯法的求解目标是找出解空间中满足约束条件的:( A )A、所有解B、一些解C、极大解D、极小解5、贪心算法和动态规划算法共有特点是: ( A )A、最优子结构B、重叠子问题C、贪心选择D、形函数6、哈夫曼编码是: ( B)A、定长编码B、变长编码C、随机编码D、定长或变长编码7、多机调度的贪心策略是: ( A)A、最长处理时间作业优先B、最短处理时间作业优先C、随机调度D、最优调度8、程序能够不满足如下性质: ( D )A、零个或多个外部输入B、至少一个输出C、指令的确定性D、指令的有限性9、用分治法设计出的程序一般是: ( A )A、递归算法B、动态规划算法C、贪心算法D、回溯法10、采用动态规划算法分解得到的子问题:( C )A、相互独立B、与原问题相同C、相互依赖D、相互独立且与原问题相同11、回溯法搜索解空间的方法是: ( A )A、深度优先B、广度优先C、最小耗费优先D、随机搜索12、拉斯维加斯算法的一个显著特征是它所做的随机选性决策有可能导致算法: ( C )A、所需时间变化B、一定找到解C、找不到所需的解D、性能变差13、贪心算法能得到: ( C )A、全局最优解B、 0-1背包问题的解C、背包问题的解 D、无解14、能求解单源最短路径问题的算法是: ( A )A、分支限界法B、动态规划C、线形规划D、蒙特卡罗算法15、快速排序算法和线性时间选择算法的随机化版本是:( A )A、舍伍德算法B、蒙特卡罗算法C、拉斯维加斯算法D、数值随机化算法主观题部分:二、写出下列程序的答案( 每题2.5分, 共2题)1、请写出批处理作业调度的回溯算法。

北语网院20春《算法与数据分析》作业_1答案

北语网院20春《算法与数据分析》作业_1答案

(单选)1:下列随机算法中运行时有时候成功有时候失败的是A:数值概率算法
B:舍伍德算法
C:拉斯维加斯算法
D:蒙特卡罗算法
正确答案:C
(单选)2:最长公共子序列算法利用的算法是
A:分支界限法
B:动态规划法
C:贪心法
D:回溯法
正确答案:B
(单选)3:矩阵连乘问题的算法可由什么设计实现
A:分支界限算法
B:动态规划算法
C:贪心算法
D:回溯算法
正确答案:B
(单选)4:下列哪一种算法不是随机化算法
A:蒙特卡罗算法
B:.拉斯维加斯算法
C:.动态规划算法
D:.舍伍德算法
正确答案:C
(单选)5:贪心算法与动态规划算法的共同点是
A:重叠子问题
B:构造最优解
C:贪心选择性质
D:最优子结构性质
正确答案:D
(单选)6:下面哪种函数是回溯法中为避免无效搜索采取的策略A:递归函数
B:.剪枝函数
C:。

随机数函数
D:.搜索函数
正确答案:B
(单选)7:采用最大效益优先搜索方式的算法是
A:分支界限法。

数据结构与算法作业答案

数据结构与算法作业答案

《数据结构与算法》作业参考答案说明:1、题号形式: 每题都以【sn,cha,sec】开头,sn表明本题的题目序号,每道题都有唯一的序号;cha表示内容所在的章;sec表示内容所在的节。

如:【17,2,1】表示序号17的题来自第2章第1节。

2、题型:1) 选择题:序号1-180题2) 是非题:序号181-220题3) 分析计算作图题:序号221-250题(选自《数据结构题集》—严蔚敏等编)3、内容取舍:根据本学期上课课件中的内容,未上课章节的练习可舍弃。

4、必做题或选做题:是非题和选择题(序号1-220)只要在上过课的章节中都是必做题,分析计算作图题(序号221-250)在每题后标出是必做题还是选做题,其中16个必做题14个选做题。

1) 选择题:序号1-180题序号参考答案1 BD2 D3 C4 A5 C6 D7 C8 D9 B10 D11 B12 D13 C14 C15 D16 A17 A18 A19 A20 A21 A22 D24 A25 B26 C27 C28 C29 B30 B31 B32 B33 B34 A35 A36 C37 D38 D39 B40 C41 B42 A43 D44 B45 D46 B47 C48 C49 B50 B51 A52 D53 D54 C55 A56 A57 C58 C59 C60 B61 A62 D64 B65 C66 B67 D68 D69 B70 A71 C72 B73 A74 D75 D76 B77 C78 C79 D80 B81 D82 C83 B84 A85 B86 C87 D88 B89 B90 B91 D92 C93 D94 A95 C96 C97 B98 A99 C 100 C 101 A 102 D 103 C105 C 106 D 107 C 108 B 109 B 110 D111 A 112 B 113 A 114 B 115 C 116 D 117 B 118 C 119 A 120 B121 A 122 A 123 C 124 C 125 B 126 B 127 B 128 C 129 C 130 B131 A 132 D 133 AB 134 D 135 C 136 C 137 B 138 A 139 B 140 B141 D 142 A 143 B145 A146 A147 C148 B149 C150 A151 B152 B153 C154 B155 A156 C157 C158 C159 A160 B161 C162 A163 A164 D165 B166 C167 D168 C169 C170 B171 B172 C173 B174 D175 C176 D177 B178 A179 A180 B2) 是非题:序号181-220题181 T182 T183 F184 T185 T186 F187 T188 T189 T190 T191 F192 T193 T194 F195 F196 T197 F198 T199 F200 T201 T202 T203 F204 T205 T206 F207 T208 T209 F210 T211 F212 T213 T214 F215 T216 T217 F218 T219 T220 F3) 分析计算作图题:序号221-250(选自《数据结构题集》—严蔚敏等编)【221,1,4】(选自《数据结构题集》1.8,选做题)设n为正整数,试确定下列各段程序中前置以记号@的语句的频度(语句的频度指的是该语句重复执行的次数)。

人教A版数学必修三同步作业:第1章 算法初步 作业12

人教A版数学必修三同步作业:第1章 算法初步 作业12

课时作业(十二)1.k进制数32 501(k),则k不可能是()A.5B.6C.7 D.8答案 A解析k进制数各数字均小于k.2.以下各数中有可能是五进制数的为()A.55 B.106C.732 D.2 134答案 D解析五进制数只能出现0,1,2,3,4.3.三位五进制数表示的最大十进制数是()A.120 B.124C.144 D.224答案 B解析最大的三位五进制数是444(5),化为十进制为444(5)=4×52+4×51+4×50=124(10).4.下列二进制数中最大的数是()A.111(2)B.1 001(2)C.110(2)D.101(2)答案 B解析B中有四位数:1 001=23+1=9(10).5.把213(4)化为九进制数为()A.44(9)B.34(9)C.43(9)D.213(9)答案 C解析213(4)=2×42+1×41+3×40=39.∴213(4)=43(9).6.将数30 012(4)转化为十进制数为()A.524 B.774C.256 D.260答案 B解析30 012(4)=3×44+0×43+0×42+1×41+2×40=774.7.将二进制数10 001(2)化为五进制数为()A.32(5)B.23(5)C.21(5)D.12(5)答案 A解析将10 001(2)化为十进制数为:10 001(2)=1×24+0×23+0×22+0×21+1×20=17,将17化为五进制数为32(5),∴10 001(2)=32(5).8.如图是将二进制数11 111(2)化为十进制数的一个程序框图,判断框内应填入的条件是()A.i≤5 B.i≤4C.i>5 D.i>4答案 D解析11 111(2)=1×20+1×21+1×22+1×23+1×24,故i>4时,即输出S,结束程序.9.1 001 101(2)与下列哪个值相等()A.115(8)B.113(8)C.114(8)D.116(8)答案 A解析先化为十进制数:1 001 101(2)=1×26+1×23+1×22+1×20=77,再化为八进制.∴77=115(8).∴1 001 101(2)=115(8).10.三进制数2 012(3)化为六进制数为abc(6),则a+b+c=________.答案9解析2 012(3)=2×33+0×32+1×31+2×30=59.三进制数2 012(3)化为六进制数为135(6),∴a+b+c=9.11.在计算机的运行过程中,常常要进行二进制数与十进制数的转换与运算.如十进制数8转换成二进制数是1 000,记作8(10)=1 000(2);二进制数111转换成十进制数是7,记作111(2)=7(10)等.二进制的四则运算,如11(2)+101(2)=1 000(2).请计算:11(2)×111(2)=________,10 101(2)+1 111(2)=________.答案10 101(2)100 100(2)解析由题可知,在二进制数中的运算规律是“满二进一”,∴11(2)×111(2)=10 101(2),10 101(2)+1 111(2)=100 100(2).12.将八进制数127(8)化成二进制数为________(2).答案 1 010 111解析将127(8)化为十进制:127(8)=1×82+2×8+7=64+16+7=87,再将十进制数87化为二进制数为:如图∴87=1 010 111(2).13.若六进制数13 m 502(6)化为十进制数等于12 710,数字m=________.答案 4解析由于13m502(6)=1×65+3×64+m×63+5×62+0×61+2×60=216m+11 846,所以令12 710=216m+11 846,解得m=4,所以数字m=4.14.(1)已知71=47(k),求k的值.(2)已知175(8)=120+r,求正整数r.(3)已知a=12(16),b=25(7),c=33(4),则a,b,c的大小关系是如何的?解析(1)∵47(k)=4·k+7,∴71=4k+7,k=16.(2)∵175(8)=1×82+7×81+5×80=125,∴125=120+r.∴r=5.(3)a=2×160+1×16=18,b=5×70+2×71=19,c=3×40+3×41=15,∴b>a>c.1.一个k进制的三位数与某六进制的二位数等值,则k不可能是()A.3 B.4C.5 D.7答案 D解析k进制的最小三位数为k2,六进制的最大二位数为5×6+5=35,由k2≤35,得0<k≤35,故k不可能是7.1. (2016·四川)秦九韶是我国南宋时期的数学家,普州(现四川省安岳县)人,他在所著的《数书九章》中提出的多项式求值的秦九韶算法,至今仍是比较先进的算法.如图所示的程序框图给出了利用秦九韶算法求某多项式值的一个实例,若输入n ,x 的值分别为3,2,则输出v 的值为( )A .9B .18C .20D .25 答案 B解析 由题意得i =2,v =1×2+2=4,i =1;v =4×2+1=9,i =0;v =9×2+0=18,i =-1,此时不满足i ≥0,退出循环,所以输出v =18.故选B. 2.(2016·课标全国Ⅰ)执行下面的程序框图,如果输入的x =0,y =1,n =1,则输出x ,y 的值满足( )A .y =2xB .y =3xC .y =4xD .y =5x答案 C解析 运行程序,第1次循环得x =0,y =1,n =2,第2次循环得x =12,y =2,n =3,第3次循环得x =32,y =6,此时x 2+y 2≥36,输出x ,y ,满足C 项.3.(2014·新课标全国Ⅰ理)执行下面的程序框图,若输入的a ,b ,k 分别为1,2,3,则输出的M =( )A.203 B.165 C.72D.158答案 D解析 根据程序框图所给的已知条件逐步求解,直到得出满足条件的结果. 当n =1时,M =1+12=32,a =2,b =32;当n =2时,M =2+23=83,a =32,b =83;当n =3时,M =32+38=158,a =83,b =158;当n =4时,终止循环.输出M =158.4.(2014·北京理)当m =7,n =3时,执行如图所示的程序框图,输出的S 值为( )A .7B .42C .210D .840 答案 C解析 按照程序框图执行算法,输出结果.程序框图的执行过程如下:m =7,n =3时,m -n +1=5, k =m =7,S =1,S =1×7=7;k =k -1=6>5,S =6×7=42;k =k -1=5=5,S =5×42=210;k =k -1=4<5,输出S =210.故选C.5.(2014·安徽理)如图所示,程序框图(算法流程图)的输出结果是()A.34 B.55C.78 D.89答案 B解析根据程序框图所给的条件逐步求解,直到得出满足条件的结果.当输入x=1,y=1,执行z=x+y及z≤50,x=y,y=z后,x,y,z的值依次对应如下:x=1,y=1,z=2;x=1,y=2,z=3;x=2,y=3,z=5;x=3,y=5,z=8;x=5,y=8,z=13;x=8,y=13,z=21;x=13,y=21,z=34;x=21,y=34,z=55.由于55>50不成立,故输出55.故选B.6.(2015·北京)执行如图所示的程序框图,输出的结果为()A.(-2,2) B.(-4,0)C.(-4,-4) D.(0,-8)答案 B解析初始值x=1,y=1,k=0,执行程序框图,则s=0,t=2,x=0,y=2,k=1;s=-2,t=2,x=-2,y=2,k=2;s=-4,t=0,x=-4,y=0,k=3,此时输出(x,y),则输出的结果为(-4,0),选B.7.(2013·陕西)根据下列算法语句,当输入x为60时,输出y的值为()INPUT xIF x<=50 THENy=0.5*xELSEy=25+0.6*(x-50)END IFPRINT yA.25B.30答案 C解析 本题考查程序语句问题.此算法语句的作用实际上是求函数f(x)=⎩⎪⎨⎪⎧0.5x ,x ≤50,25+0.6(x -50),x>50的值,∴x =60时,y =25+0.6×(60-50)=31.选C.8.(2013·江西)阅读如下程序框图,如果输出i =5,那么在空白矩形框中填入的语句为( )A .S =2*i -2B .S =2*i -1C .S =2*iD .S =2*i +4 答案 C解析 本题考查程序框图.逐一检验知,S =2*i ,其他项不符合输出i =5的条件. 循环次数不多,逐一检验即可.9.(2013·浙江)某程序框图如图所示,若该程序运行后输出的值是95,则( )A .a =4B .a =5C .a =6D .a =7答案 A解析 本题考查循环结构的程序框图. k 1 2 3 4 S32537495故a 应取4.第9题图 第10题图10.(2012·山东)执行如图的程序框图,如果输入a =4,那么输出的n 的值为( )C .4D .5 答案 B解析 逐次计算结果是P =1,Q =3,n =1;P =5,Q =7,n =2;P =21,Q =15,n =3,退出循环,故输出结果是n =3. 11.(2012·广东文)执行如图所示的程序框图,若输入n 的值为6,则输出s 的值为( )A .105B .16C .15D .1 答案 C解析 按照程序过程,通过反复判断循环条件执行程序.执行过程为s =1×1=1,i =3;s =1×3=3,i =5;s =3×5=15,i =7≥6,跳出循环.故输出s 的值为15. 12.(2012·天津文)阅读如图所示的程序框图,运行相应的程序,则输出S 的值为( ) A .8 B .18 C .26 D .80 答案 C解析 程序执行情况为S =31-30=2,n =2;S =2+32-31=8,n =3;S =8+33-32=26,n =4≥4,跳出循环.故输出26,选C.第12题图 第13题图13.(2015·重庆)执行如图所示的程序框图,若输出k 的值为8,则判断框内可填入的条件是( ) A .s ≤34B .s ≤56C .s ≤1112D .s ≤2524答案 C解析 第一次循环,得k =2,s =12;第二次循环,得k =4,s =12+14=34;第三次循环,得k=6,s =34+16=1112,第四次循环,得k =8,s =1112+18=2524,此时退出循环,输出k =8,所以判断框内可填入的条件是s ≤1112,故选C.14.(2014·福建文)阅读右图所示的程序框图,运行相应的程序,输出的n 的值为( ) A .1 B .2 C .3 D .4 答案 B解析 由程序框图所给的条件逐步求解,直到得出满足条件的结果.当n =1时,21>12满足条件,继续循环得n =2,22>22不成立,不满足条件,所以输出n =2.第14题图 第15题图15.(2013·江苏)如图是一个算法的流程图,则输出的n 的值是________. 答案 3解析 本题考查算法的识别和应用. 直接模拟执行,a 8 26 n23输出n 为3. 16.(2016·江苏)如图是一个算法的流程图,则输出的a 的值是________.答案 9解析 执行程序,a =1,b =9,不满足a>b ,第一次循环:a =5,b =7,不满足a>b ;第二次循环:a =9,b =5,满足a>b ,退出循环,故输出a =9. 17.(2013·湖北)阅读如图所示的程序框图,运行相应的程序,输出的结果i =________.答案 5解析 从程序框图知,a =10,i =1;a =5,i =2;a =16,i =3;a =8,i =4;a =4,i =5.故输出i =5.1.如图所示的程序框图中,第3个输出的数是( )A .1 B.32 C .2 D.52答案 C解析 N 和A 的值依次为A =1,N =2;A =32,N =3;A =2,N =4.所以,第三个输出的数是2.2.(2017·衡水中学调研)已知函数y =⎩⎪⎨⎪⎧-1 (x >0),0 (x =0),1 (x <0),求该函数值的程序框图,如图所示.则①处应填________;②处应填________.答案①y=-1,②y=1由Ruize收集整理。

计算机编程算法作业题参考答案

计算机编程算法作业题参考答案

计算机编程算法作业题参考答案1. 第一题答案:题目要求实现一个排序算法,可以选择任意一种排序算法进行实现。

以下给出一种可能的解答:def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arrarr = [64, 34, 25, 12, 22, 11, 90]sorted_arr = bubble_sort(arr)print("Sorted array:", sorted_arr)以上代码使用冒泡排序算法对给定的数组进行排序。

2. 第二题答案:题目要求实现一个查找算法,可以选择任意一种查找算法进行实现。

以下给出一种可能的解答:def binary_search(arr, target):low = 0high = len(arr) - 1while low <= high:mid = (low + high) // 2if arr[mid] == target:return midelif arr[mid] < target:low = mid + 1else:high = mid - 1return -1arr = [11, 22, 25, 34, 64, 90]target = 25index = binary_search(arr, target)if index != -1:print("Target found at index:", index)else:print("Target not found in the array.")以上代码使用二分查找算法在有序数组中查找给定的目标值。

3. 第三题答案:题目要求实现一个递归算法,可以选择任意一种递归算法进行实现。

算法分析与设计作业及参考答案

算法分析与设计作业及参考答案

算法分析与设计作业及参考答案作业题目1、请分析冒泡排序算法的时间复杂度和空间复杂度,并举例说明其在实际中的应用场景。

2、设计一个算法,用于在一个未排序的整数数组中找到第二大的元素,并分析其时间复杂度。

3、比较贪心算法和动态规划算法的异同,并分别举例说明它们在解决问题中的应用。

参考答案1、冒泡排序算法时间复杂度:冒泡排序的基本思想是通过相邻元素的比较和交换,将最大的元素逐步“浮”到数组的末尾。

在最坏情况下,数组完全逆序,需要进行 n 1 轮比较和交换,每一轮比较 n i 次(i 表示当前轮数),所以总的比较次数为 n(n 1) / 2,时间复杂度为 O(n^2)。

在最好情况下,数组已经有序,只需要进行一轮比较,时间复杂度为 O(n)。

平均情况下,时间复杂度也为 O(n^2)。

空间复杂度:冒泡排序只在原数组上进行操作,不需要额外的存储空间,空间复杂度为 O(1)。

应用场景:冒泡排序算法简单易懂,对于规模较小的数组,或者对算法的简单性要求较高而对性能要求不是特别苛刻的场景,如对少量数据进行简单排序时,可以使用冒泡排序。

例如,在一个小型的学生成绩管理系统中,需要对一个班级的少量学生成绩进行排序展示,冒泡排序就可以满足需求。

2、找到第二大元素的算法以下是一种使用遍历的方法来找到未排序整数数组中第二大元素的算法:```pythondef find_second_largest(arr):largest = arr0second_largest = float('inf')for num in arr:if num > largest:second_largest = largestlargest = numelif num > second_largest and num!= largest:second_largest = numreturn second_largest```时间复杂度分析:这个算法需要遍历数组一次,所以时间复杂度为O(n)。

北语网院20春《算法与数据分析》作业_4答案

北语网院20春《算法与数据分析》作业_4答案

(单选)1:使用分治法求解不需要满足的条件是
A:子问题必须是一样的
B:子问题不能够重复
C:子问题的解可以合并
D:原问题和子问题使用相同的方法解
正确答案:A
(单选)2:合并排序算法是利用
A:分治策略
B:动态规划法
C:贪心法
D:回溯法
正确答案:A
(单选)3:在下列算法中有时找不到问题解的是
A:蒙特卡罗算法
B:拉斯维加斯算法
C:舍伍德算法
D:数值概率算法
正确答案:B
(单选)4:在下列算法中得到的解未必正确的是
A:蒙特卡罗算法
B:拉斯维加斯算法
C:舍伍德算法
D:数值概率算法
正确答案:B
(单选)5:用分支限界法设计算法的第二步是
A:针对所给问题,定义问题的解空间(对解进行编码)
B:确定易于搜索的解空间结构(按树或图组织解)
C:以广度优先或以最小耗费(最大收益)优先的方式搜索解空间D:在搜索过程中用剪枝函数避免无效搜索
正确答案:B
(单选)6:0-1背包问题的回溯算法所需的计算时间为
A:O(n2n)
B:O(nlogn)
C:O(2n)
D:O(n)
正确答案:A
(单选)7:实现最大子段和利用的算法是
A:分治策略。

《算法分析与设计》作业答案

《算法分析与设计》作业答案

《算法分析与设计》作业1、考虑,10≤≤i x 而不是x i ∈{0,1}的连续背包问题。

一种可行的贪婪策略是:按价值密度非递减的顺序检查物品,若剩余容量能容下正在考察的物品,将其装入;否则,往背包内装如此物品的一部分。

(a) 对于n=3,w=[100,10,10],p=[20,15,15],以及c=105,上述装入法获得结果是什么?(b)证明这种贪婪算法总能获得最优解。

(c) 用伪代码描述此算法。

答:(a )利用贪婪算法,按价值密度考察的背包为w2,w3,w1;背包w2和w3重20,还可以容纳85,由于10≤≤i x ,背包w1还可以装入x1=0.85,则背包内物品总价值为15+15+20*0.85=47.(b )假设已按价值密度排好序,考察w1,w2,……,wi ,……,对应的价值为p1,p2,……,pi,……如果装到pi-1再装pi 时,恰好要取xi 个wi 。

(,10≤≤i x ) 因为比它价值密度大的都已装载完,所以此时获得的为最优解。

(c )算法描述如下: template <class T>int ContainerLoading( int x[], T w[], T c, int n ) {int *t = new int[n+1]; IndirectSort(w, t, n); for( int i=1; i<=n; i++) x[i] = 0;for(i=1; i<=n && w[t[i]]<=c; i++){ x[t[i]] = 1; c += w[t[i]]; } delete []t; }2、证明当且仅当二分图没有覆盖时,下述算法找不到覆盖。

m=0; //当前覆盖的大小对于A中的所有i,New[i]=Degree[i]对于B中的所有i,Cov[i]=falsewhile(对于A中的某些i,New[i]>0) {设v是具有最大的New[i]的顶点;C[m++]=v;for(所有邻接于v的顶点j) {If(!Cov[j]) {Cov[j] = true;对于所有邻接于j的顶点,使其New[k]减1}}}if (有些顶点未被覆盖) 失败else 找到一个覆盖2)给出一个具有覆盖的二分图,使得上述算法找不到最小覆盖。

离散数学及算法课后习题作业答案

离散数学及算法课后习题作业答案

离散数学及算法(曹晓东,原旭版) 课后作业题答案第一章 命题逻辑1.第7页第3题(1)解:逆命题:如果我去公园,则天不下雨;反命题:如果天下雨,则我不去公园;逆反命题:如果我不去公园,则天下雨了。

(2)解:(此题注意:P 仅当Q 翻译成P Q →)逆命题:如果你去,那么我逗留。

反命题:如果我不逗留,那么你没去。

逆反命题:如果你没去,那么我不逗留。

(3)解:逆命题:如果方程n n n x y z +=无整数解,那么n 是大于2的正整数。

反命题:如果n 不是大于2的正整数,那么方程n n n xy z +=有整数解。

逆反命题:如果方程n n n x y z +=有整数解,那么n 不是大于2的正整数。

(4)解:逆命题:如果我不完成任务,那么我不获得更多的帮助。

反命题:如果我获得了更多的帮助,那么我能完成任务。

逆反命题:如果我能完成任务,那么我获得了更多的帮助。

2.第15页第1题(4)解:(())P Q P T ⌝⌝∨→⌝↔()()P Q P Q ⌝∧↔⌝∨⌝()()P Q P Q ⇔⌝∨⌝↔⌝∨⌝ (重言式)(9)解:P P Q F Q T ∧⌝→⇔→⇔(重言式)(10)解:P Q Q T Q Q ∨⌝→⇔→⇔(可满足式)3.第16页第5题(2)证明:(())P Q P ⌝⌝∨→⌝(())()P Q P P Q PP Q PP P QF QF ⇔⌝∨∨⌝⇔⌝∨∧⇔⌝∧⌝∧⇔⌝∧∧⌝⇔∧⌝⇔因此,(())P Q P F ⌝⌝∨→⌝↔,得证。

(4)证明:()()P P P P →⌝∧⌝→()()P P P P P P F⇔⌝∨⌝∧∨⇔⌝∧⇔因此,()()P P P P F →⌝∧⌝→↔,得证。

4.第16页第6题(1)P Q P Q ∧⇒→证明:设P Q ∧为真,那么P 为真,并且Q 为真,因此P Q →为真。

所以P Q P Q ∧⇒→。

(2)()()()P Q R P Q P R →→⇒→→→证明:设()()P Q P R →→→为假,于是P Q →为真,P R →为假。

北语18秋《算法与数据分析》作业1234满分答案

北语18秋《算法与数据分析》作业1234满分答案

18秋《算法与数据分析》作业1回溯法的效率不依赖于下列哪些因素A.满足显约束的值的个数B..计算约束函数的时间C..计算限界函数的时间D..确定解空间的时间正确答案:D下列算法中通常以深度优先方式系统搜索问题解的是A.备忘录法B.动态规划法C.贪心法D.回溯法正确答案:D分治法所能解决的问题一般具有的几个特征不包括A.该问题的规模缩小到一定的程度就可以容易地解决B.该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质C.利用该问题分解出的子问题的解不可以合并为该问题的解D.原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题正确答案:C一个问题可用动态规划算法或贪心算法求解的关键特征是问题的A.重叠子问题B.最优子结构性质C.贪心选择性质D.定义最优解正确答案:B下列算法中通常以自底向上的方式求解最优解的是A.备忘录法B.动态规划法C.贪心法D.回溯法正确答案:B在下列算法中有时找不到问题解的是A.蒙特卡罗算法B.拉斯维加斯算法C.舍伍德算法D.数值概率算法正确答案:B矩阵连乘问题的算法可由什么设计实现A.分支界限算法B.动态规划算法C.贪心算法D.回溯算法正确答案:B贪心算法与动态规划算法的共同点是A.重叠子问题B.构造最优解C.贪心选择性质D.最优子结构性质正确答案:D下列是动态规划算法基本要素的是A.定义最优解B.构造最优解C.算出最优解D.子问题重叠性质正确答案:D下面哪种函数是回溯法中为避免无效搜索采取的策略A.递归函数B..剪枝函数C.。

随机数函数D..搜索函数正确答案:B贪心选择性质是贪心算法可行的第一个基本要素,但不是贪心算法与动态规划算法的主要区别A.错误B.正确正确答案:A优先队列式分支限界法是指按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点A.错误B.正确正确答案:B矩阵连乘问题的算法可由动态规划设计实现A.错误B.正确正确答案:B分治法与动态规划法的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。

算法分析与设计作业参考答案

算法分析与设计作业参考答案

《算法分析与设计》作业参考答案作业一一、名词解释:1.递归算法:直接或间接地调用自身的算法称为递归算法。

2.程序:程序是算法用某种程序设计语言的具体实现。

二、简答题:1.算法需要满足哪些性质?简述之。

答:算法是若干指令的有穷序列,满足性质:(1)输入:有零个或多个外部量作为算法的输入。

(2)输出:算法产生至少一个量作为输出。

(3)确定性:组成算法的每条指令清晰、无歧义。

(4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。

2.简要分析分治法能解决的问题具有的特征。

答:分析分治法能解决的问题主要具有如下特征:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

3.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。

答:将递归算法转化为非递归算法的方法主要有:(1)采用一个用户定义的栈来模拟系统的递归调用工作栈。

该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。

(2)用递推来实现递归函数。

(3)通过Cooper 变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。

后两种方法在时空复杂度上均有较大改善,但其适用范围有限。

三、算法编写及算法应用分析题: 1.冒泡排序算法的基本运算如下: for i ←1 to n-1 dofor j ←1 to n-i do if a[j]<a[j+1] then交换a[j]、a[j+1];分析该算法的时间复杂性。

答:排序算法的基本运算步为元素比较,冒泡排序算法的时间复杂性就是求比较次数与n 的关系。

(1)设比较一次花时间1;(2)内循环次数为:n-i 次,(i=1,…n ),花时间为:∑-=-=in j i n 1)(1(3)外循环次数为:n-1,花时间为:2.设计一个分治算法计算一棵二叉树的高度。

计算机操作系统算法题(最全)

计算机操作系统算法题(最全)

6. 算法题(共32个题目)个题目)200348. 在信号量机制中,若P(S)操作是可中断的,则会有什么问题?问题?此题答案为:答:此题答案为:答:P(S)的操作如下:)的操作如下:Begin  B egin S.Value:= S.Value-1; ①If S.Value<0 Then ②Begin Insert(*,S.L); Block(*) ③End  E nd. End. 若P(S)可中断的,例如进程A在执行了语句①之后从CPU上退下了,假定此时S.Value=0;这时换另一进程B,B又将S.Value的值减1使之为-1,在执行语句③时,B被阻塞;然后又换回A执行,由于A的"断点"是语句①之后,当它执行语句②时,由于这时S.Value已经是-1,故进程继续执行而被阻塞。

这就出现了错误:本来A操作P(S)操作后,S.Value=0,是不应该被阻塞的,现在却被阻塞了。

却被阻塞了。

200350. 何谓临界区?下面给出的两个进程互斥的算法是安全的吗?为什么?为什么? #define true;  # define false; Int flag[2]; flag[1]=flag[2]=false; enter-crtsec(i) int i;  { While(flag[1-i]) flag[i]=true; } feave-crtsec(i)  Int i;  { flag[i]=false;  }  process I; … Enter-crtsec(i);  In critical section;  Leave-crtsec(i); 此题答案为:答:此题答案为:答:一次仅允许一个进程使用的资源称为临界资源,在一次仅允许一个进程使用的资源称为临界资源,在进程中对临界资源访问的程序段称为临界区。

进程中对临界资源访问的程序段称为临界区。

从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。

数据结构与算法第二章作业答案

数据结构与算法第二章作业答案

方法一:
void Move_MAX(LinkList &L) {
q=L; p=L->next;
while(p) {
if(p->data>q->data) q=p;
p=p->next;
}//while循环,q指向最大值结点
if(q!=L) {
s=L; while(s->next!=q) s=s->next;//s指向q的直接前驱
q->next=NULL
L

35
67
18
52
s
值最大的结点不是首元结点
90 ∧ 14
q
s->next=q->next
71

82 65 ^
r
r->next=q
L=q->next
L

135 ∧ 67
18
q
52
90
14
71

82 65 ^
r
q->next=NULL
r->next=q
值最大的结点是首元结点
}
r=L; while(r->next) r=r->next; //r指向表尾结点
if(q!=r) {//若q是表尾结点,算法结束
if(q!=L) { //q不是第一个结点
s->next=q->next; r->next=q; q->next=NULL;
}
else { //q是第一个结点
L=q->next;
5. 已知不带头结点的非空线性链表头指针为L,请写一 个算法,将该链表中数据域值最大的那个结点移到链 表的最末端。(作业)

中科大算法设计与分析分布式算法部分作业部分答案

中科大算法设计与分析分布式算法部分作业部分答案
算法设计与分析 第二次作业
1. 分析在同步和异步模型下汇集算法的复杂性。 分析在同步和异步模型下பைடு நூலகம்集算法的复杂性。
解:与广播算法分析时间复杂性的步骤一致,一两句的说明 与广播算法分析时间复杂性的步骤一致, 不是分析。 不是分析。 <1> 同步模型 引理:在汇集算法的每个容许执行里, 引理:在汇集算法的每个容许执行里,树中每个高为 t 轮里收到所有孩子的msg。 子树根结点在第 t 轮里收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 定理: 存在一个时间复杂度为O(d)的 同步汇集算法。 同步汇集算法。 <2> 异步模型 引理:在汇集算法的每个容许的执行里, 引理:在汇集算法的每个容许的执行里,树中每个高为 t 收到所有孩子的msg。 的子树根结点在时刻 t 收到所有孩子的msg。 归纳证明。。。 归纳证明。。。 定理: 存在一个时间复杂度为O(d)的 定理:当生成树高为 d 时,存在一个时间复杂度为O(d)的 异步汇集算法。 异步汇集算法。
6.
证明同步环上不存在匿名的、 证明同步环上不存在匿名的、一致性的 Leader选举算法 Leader选举算法。 选举算法。
解:由Lemma3.1可得。 解:由Lemma3.1可得。 假设R是大小为n>1的环(非均匀),A 假设R是大小为n>1的环(非均匀),A是其上的一 个匿名算法,它选中某处理器为leader。因为环是 个匿名算法,它选中某处理器为leader。因为环是 同步的且只有一种初始配置,故在R 同步的且只有一种初始配置,故在R上A只有唯一的 合法执行。 Lemma3.1: 在环R上算法A Lemma3.1: 在环R上算法A的容许执行里,对于每 轮k,所有处理器的状态在第k轮结束时是相同的。 ,所有处理器的状态在第k Note:每个处理器同时宣布自己是Leader! Note:每个处理器同时宣布自己是Leader!
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1算法:是对特定问题求解步骤的一种描述,是指令的有限序列。

程序:当一个算法用某种程序设计语言来描述时,得到的就是程序,也就是说,程序是用某种程序设计语言对算法的具体实现.算法有输入、输出、确定性、能行性和有限性等特征,当不具备有穷性时,只能叫做计算过程,而不能称之为算法,算法可以终止,而程序没有此限制。

1.2程序证明和程序测试的目的各是什么?程序证明是确认一个算法能正确无误的工作.程序测试的目的是发现错误1n?0{!?n的递归定义:解: n!1-91?n?1)!nn*(求解n!的递归函数long Factorial (long n){if(n<0){cout<<”error!”;exit(0);}if(n==0)return 1;else return n *Factorial (n-1);}1-10使用归纳法,证明上题所设计的计算n!的递归函数的正确性证明(归纳法证明):(1)首先,如果n=0,那么程序执行if(n==0)return 1;返回1,算法显然正确;(2)假定函数Factorial对n<k(>1)能正确运行,那么,当n=k时,算法必定执行:else return k *Factorial (k-1);因为Factorial (k-1)正确,所以,当n=k时,程序运行正确综合以上两点,可得程序正确.证毕.2-1, 简述衡量一个算法的主要性能标准,说明算法的正确性与健壮性的关系答: 衡量一个算法的主要性能指标有:正确性,简单性,高效低存储,最优性算法的正确性与健壮性的关系:所谓算法的正确性:是指在合法的输入下,算法应实现预先规定的功能和计算精度要求;所谓算法的健壮性,是指当输入不合法时,算法应该能按某种预定的方式做出适当的处理;正确的算法不一定的是健壮的,健壮的算法也不一定是完全正确的.正确性和健壮一个可靠的算法,要求能在正常情况下正确的工作,而在异常情况下,亦.性是相互补充的.能做出适当处理.2-9(1)设计一个C/C++程序,实现一个n*m的矩阵转置,原矩阵与其转置矩阵保存在二维数组中. V oid reverse(int **a,int **b,int n,int m){For(int i=0;i<n;i++)For(int j=0;j<m;j++)b[j][i]=a[i][j];}(2)使用全局变量count,改写矩阵转置程序,并运行修改后的程序以确定此程序所需的程序步V oid reverse(int **a,int **b,int n,int m,int &count){int i=0;count++;int j=0;count++;For(;i<n;i++)For(;j<m;j++){count++;b[j][i]=a[i][j];count++;}}2-10试用定义证明下列等式的正确性22)5n-8n+2=O(n(1)22-8n+2<=6n5n时,有时,当n>n证明: 因为当n=1,C=6002-16 使用递推关系式计算求n!的递归函数的时间(即分析1-9题中的函数的时间复杂度),要求使用替换和迭代两种方法分别计算之.解: 分析1-9题中的函数的时间复杂度:用基本运算乘法的运算次数作为衡量时间复杂度的量当n=0时,程序执行if(n==0) return 1;,并没有做乘法,故T(0)=0;当n>=1时程序执行n*Factorial (n-1);此时T(n)= T(n-1)+1故:0n?0{?T(n)111)??n?T(n替换法: T(0)=0,T(1)=1,T(2)=2----- 总结得到:T(n)=n;归纳法证明:(1),当n=0时,T(0)=0,结论成立;(2)假设当k<n时,有 T(k)=k,那么,当k=n时,有T(n)=T(n-1)+1=(n-1)+1=n所以,对所有n>=0有T(n)=n;成立.迭代法:T(n)=T(n-1)+1=(T(n-2)+1)+1=((T(n-3)+1)+1)+1=....=T(0)+1+1......+1(n个1)=n2n)?(n/2T(n)?2T2)?T(1利用递归树计算递推方程 2-19k ,非递归部分之和为即k+1)层那么假设n=2,,总共有logn+1(23logn2k222122…=(1+1/2+1/2+n+1/2/2+n+1/2/2)n+…+n+/2n22)=2n+2n=O(n处的2n/3X与它先将待查元素X与n/3处的元素比较,然后将5-8三分搜索算法的做法是:n/3 或者将范围缩小到原来的比较的结果或者找到X,元素比较,*/ 递归算法/*int Search3(int a[],int left,int right,int x){int l,u;if(left<=right){l=left+(right-left)/3;u=left+(right-left)*2/3;if(x==a[u])return u;else if(x==a[l])return l;else if(x>a[u])return Search3(a, u+1, right,x);else if(x>a[l])return Search3(a, l+1, u-1,x);elsereturn Search3(a, left, l-1,x);}return -1;}void main(){int n,*a;int x,i;cout<<Please input n:;cin>>n;a=new int[n]; //动态数组int location=-1;for(i=0;i<n;i++){a[i]=i+1;}cout<<Please input the search x:;cin>>x;cout<<endl<<Search3(a, 0, n-1,x)<<endl;}void main() */ 非递归算法/* {int a[15];int x,i;int location=-1;for(i=0;i<15;i++){a[i]=i+1;}cin>>x;i=0;int j=14,l,u;while(i<=j){l=i+(j-i)/3;u=i+(j-i)*2/3;if(x==a[u]){location=u;break;}else if(x==a[l]){location=l;break;}else if(x>a[u])i=u+1;else if(x<a[l])j=l-1;else{i=l+1;j=u-1;}}cout<<location<<endl; //x的位置}5-12V oid stoogesort(nt a[],int left,int right) {if(a[left]>a[right]) swap(a,left,right); if(left+1>=right) return;int k=(right-left+1)/3;stoogesort(a,left,right-k);stoogesort(a,left+k,right);stoogesort(a,left,right-k);}证明:元素个数n=right-left+1;(1)若为空表或只有一个元素(n=1时,即left+1==right)时,程序执行if(a[left]>a[right])swap(a,left,right);之后,执行if(left+1>=right) return;即此时程序做了一次元素之间的比较之后,不做任何操作,显然正确.(2)假设当n< right-left+1(n>=2)时,算法正确,即对于所有元素个数小于n的元素集,算法能正确排序.那么,当n= right-left+1时,算法执行程序段:int k=(right-left+1)/3;stoogesort(a,left,right-k);stoogesort(a,left+k,right);stoogesort(a,left,right-k);由假设可知:以上三条语句都能正确运行,所以,当n= right-left+1时,算法正确.由以上两点可知,算法正确.分析算法的时间复杂度:排序算法,基本运算仍然是元素之间的比较,所以,算法时间复杂度为:1n?0,1{?nT()3T(2n/3)?1n?2(用替换或迭代法计算之即可)6-1设有背包问题实例,n=7,(w0,w1,w2,w3,w4,w5,w6)=(2,3,5,7,1,4,1),.。

求这一实例的最优解及最大收益M=15,(p0,p1,p2,p3,p4,p5,p6)=( 10,5,15,7,6,18,3).解:首先,选择最优量度标准为收益重量比;其次, 依据收益重量比的非增次序对输入(物品)进行排序(p0/w0,p1/w1,p2/w2,p3/w3,p4/w4,p5/w5,p6/w6)=(5,5/3,3,1,6,4.5,3)对物品排序结果为:4,0,5,2,6,1,3最后,进行贪心选择:X=(4) X=(4,0) X=(4,0,5)(剩余载重)U=14 U=12 U=8(收益) P=6 P=6+10=16 P=16+18=34X=(4,0,5,2) X=(4,0,5,2,6) X=(4,0,5,2,6,1(2/3))(剩余载重)U=3 U=2 U=0(收益) P=34+15=49 P=49+3=52 P=52+2/3*5=55.33所以,最优解为x=(1,2/3,1,0,1,1,1); 即装入第0,2,4,5,6物品和第1个物品的2/3最大收益: P=55.336-2,0/1背包问题是一种特殊的背包问题,装入背包的物品不能分割,只允许或者整个物品装入背包,或者不装入,即xi=0,或1,(0<=i<n),以题6-1的数据作为0/1背包的实例,按贪婪法求解,这样求得的解一定是最优解吗?为什么?解:首先,选择最优量度标准为收益重量比;其次, 依据收益重量比的非增次序对输入(物品)进行排序(p0/w0,p1/w1,p2/w2,p3/w3,p4/w4,p5/w5,p6/w6)=(5,5/3,3,1,6,4.5,3)对物品排序结果为:4,0,5,2,6,1,3最后,进行贪心选择:X=(4) X=(4,0) X=(4,0,5)(剩余载重)U=14 U=12 U=8(收益) P=6 P=6+10=16 P=16+18=34X=(4,0,5,2) X=(4,0,5,2,6) X=(4,0,5,2,6)(剩余载重)U=3 U=2 继续考察第1和第3个(收益) P=34+15=49 P=49+3=52 物品,都不能装入.所以,贪心法求得的0/1背包问题的最优解为x=(1,0,1,0,1,1,1);即装入第0,2,4,5,6物品最大收益: P=52但实际上,当y=(1,1,1,0,1,1,0) 即装入第0,1,2,4,5物品,可获收益为P=54,所以,贪心法求得的0/1背包问题的解x一定不是最优解.原因是: 对于0/1背包问题,贪心法并不能保证使其单位载重下的收益最大,因为通常在背包没还装满时,却再也装不下任何物品,这样,就使得单位载重下的物品收益减少,所以, 0/1背包问题通常不能用贪心法求解.作业,6-3 设有带时限的作业排序实例n=7,收益(p0, p1, p2, p3, p4, p5, p6)=(3,5,20,18,1,6,30)得到的用JS的时限(d0, d1, d2, d3, d4, d5, d6)=(1,3,4,3,2,1,2),给出以此实例为输入,执行函数最优解和最大收益。

相关文档
最新文档