04第四章算法基础(答案)
04算法初步(检测+答案)

算法初步一、算法的定义算法是指按照一定规则解决某一类问题的明确和有限的步骤.二、程序框图1.程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.2.程序框图通常由程序框和流程线组成.3.基本的程序框有终端框(起止框)、输入、输出框、处理框(执行框)、判断框.名称内容顺序结构条件结构循环结构定义由若干个依次执行的步骤组成的,这是任何一个算法都离不开的基本结构算法的流程根据条件是否成立有不同的流向,条件结构就是处理这种过程的结构从某处开始,按照一定的条件反复执行某些步骤的情况,反复执行的步骤称为循环体程序框图A.9B.3 C. 3 D.19解:依题意得,执行完第1次循环后,x=-12+3=-9≤0;执行完第2次循环后,x=-9+3=-6≤0;执行完第3次循环后,x=-6+3=-3≤0;执行完第4次循环后,x=-3+3=0≤0;执行完第5次循环后,x =0+3=3>0.结合题中的程序框图可知,最后输出的结果是 3.例1图例2图例3图例2:给出如图程序框图,其功能是()A.求a-b的值B.求b-a的值C.求|a-b|的值D.以上都不对解析:求|a-b|的值.选C。
例3:如图,是一个程序框图,运行这个程序,则输出的结果为()A.1321 B.2113 C.813 D.138解:由算法流程图可得,第一次循环:x =1,y =2;第二次循环:x =2,y =3;第三次循环:x =3,y =5;第四次循环:x =5,y =8;第五次循环:x =8,y =13;z =21>20,此时退出循环,输出y x =138. 解:第一次:T =1,S =12-0=1;第二次:T =3,S =32-1=8;第三次:T =5,S =52-8=17. 此时满足S≥10.所以W =S +T =17+5=22.例4图 例5图 例6图 例7图例5:阅读下图所示的程序框图,若运行该程序后输出的y 值为18,则输入的实数x 值为________. 解:由流程图可得,该程序为一分段函数y =⎩⎪⎨⎪⎧ 2x 2-1,x >0,(12)x ,x ≤0, 分别令⎩⎪⎨⎪⎧ 2x 2-1=18,x >0,或⎩⎪⎨⎪⎧(12)x =18,x ≤0,解得x =34. (1)不要混淆处理框和输入框.(2)注意区分条件结构和循环结构.(3)注意区分当型循环和直到型循环.(4)循环结构中要正确控制循环次数.(5)要注意各个框的顺序.例6:执行如图所示的程序框图,如果输入的N 是6,那么输出的p 是 ( ) A .120 B .720 C .1 440 D .5 040解:当输入的N 是6时,由于k =1,p =1,因此p =p·k =1.此时k =1,满足k<6,故k =k +1=2. 当k =2时,p =1×2,此时满足k<6,故k =k +1=3.当k =3时,p =1×2×3,此时满足k<6,故k =k +1=4.当k =4时,p =1×2×3×4,此时满足k<6,故k =k +1=5.当k =5时,p =1×2×3×4×5,此时满足k<6,故k =k +1=6.当k =6时,p =1×2×3×4×5×6=720,此时k<6不再成立,因此输出p =720.例7:执行如图所示的程序框图,若输出的S =88,则判断框内应填入的条件是 ( )A .k>7?B .k>6?C .k>5?D .k>4?解:第一次循环:k =1+1=2,S =2×0+2=2;第二次循环:k =2+1=3,S =2×2+3=7;第三次循环:k =3+1=4,S =2×7+4=18;第四次循环:k =4+1=5,S =2×18+5=41;第五次循环:k =5+1=6,S =2×41+6=88,满足条件则输出S 的值,而此时k =6,故判断框内应填入的条件应是k>5.1.解决程序框图问题要注意几个常用变量(1)计数变量:用来记录某个事件发生的次数,如i =i +1.(2)累加变量:用来计算数据之和,如S =S +i.(3)累乘变量:用来计算数据之积,如p =p×i.2.处理循环结构的框图问题,关键是理解并认清终止循环结构的条件及循环次数.例8:下图是计算函数y =⎩⎪⎨⎪⎧ ln(-x ),x ≤-20,-2<x ≤32x ,x >3的值的程序框图,在①、②、③处应分别填入的是 ( )A .y =ln(-x),y =0,y =2xB .y =ln(-x),y =2x ,y =0C .y =0,y =2x ,y =ln(-x)D .y =0,y =ln(-x),y =2x解:依题意得,当x≤-2时,y =ln(-x),因此①处应填y =ln(-x);当-2<x≤3时,y =0,因此③处应填y =0;当x>3时,y =2x ,因此②处应填y =2x .例8图 例9图 例10图 例11图例9:下图中x 1,x 2,x 3为某次考试三个评阅人对同一道题的独立评分,p 为该题的最终得分.当x 1=6,x 2=9,p =8.5时,x 3等于 ( )A .11B .10C .8D .7解:由于p =8.5,6<p <9,根据程序框图可知应执行x 1=x 3,所以x 3+x 22=8.5,所以x 3=8. A .6 B .5 C .8 D .7解:图示框图的功能是计算a 1=12,q =12的等比数列的前n -1项和S >3132时,n 的最小值.∵S =a 1(1-q n -1)1-q=1-(12)n -1>3132,∴n >6,所以n =7. 例11:运行如图所示的程序框图,当输入m =-4时,输出的结果为n .若变量x ,y 满足⎩⎪⎨⎪⎧x +y ≤3,x -y ≥-1,y ≥n .则目标函数:z =2x +y 的最大值为________.解:由程序框图可知,当输入m =-4时,输出的结果为n =1,∴变量x ,y 满足⎩⎪⎨⎪⎧x +y ≤3,x -y ≥-1,y ≥1.此不等式组表示的可行域如图中的阴影部分所示.由图可知目标函数z =2x +y 在点A (2,1)处取得最大值2×2+1=5.解:由T =T +k 可知T 是一个累加变量,原题实质为求1+2+3+…+k 的和,其和为k (k +1)2.令k (k +1)2≤105,得k ≤14.故当k =15时,T =1+2+3+…+15=120>105,此时输出k =15.是()A.k=9? B.k≤8?C.k<8? D.k>8?解:据程序框图可得当k=9时,S=11;k=8时,S=11+9=20.∴应填入k>8.答案:D例14:执行下面的程序框图,输出的S=()例13图例14图例15图A.25 B.9 C.17 D.20解:由结构框图中循环体执行了2次输出的结果为17.答案:C例15:.执行如图所示的程序框图,若输出的结果是8,则判断框内m的取值范围是()A.(30,42]B.(42,56] C.(56,72]D.(30,72)解:由题知,当输出结果k=8时,S=2(1+2+3+…+7)=56;当输出结果k=7时,S=2(1+2+3+…+6)=42,结合程序框图知.答案:B例16:如右边程序框图所示,已知集合A={x|框图中输出的x值},集合B={y|框图中输出的y值},全集U=Z,Z为整数集.当x=-1时(∁U A)∩B=()A.{-3,-1,5} B.{-3,-1,5,7}C.{-3,-1,7} D.{-3,-1,7,9}解析:据程序框图可得A={0,1,2,3,4,5,6},B={-3,-1,1,3,5,7,9},故(∁U A)∩B={-3,-1,7,9}.答案:D例17:阅读如下图所示的程序框图,则运行后输出的结果是________.例16题图例17题图解:依次执行的是S=1,i=2;S=-1,i=3;S=2,i=4;S=-2,i=5;S=3,i=6;S=-3,i=7,此时满足i>6,故输出的结果是-3.答案:-3。
算法设计与程序分析习题精选含答案(第四章)

算法设计与程序分析习题精选含答案(第四章)作业四4.1.2 Alternating glassesa. There are 2n glasses standing next to each other in a row, the first n of them filled with a soda drink and the remaining n glasses empty. Make the glasses alternate in a filled-empty-filled-empty pattern in the minimum number of glass moves. [Gar78]b. Solve the same problem if 2n glasses—n with a drink and n empty—are initially in a random order答:图1 杯子分组a.两个为一组,在前n个杯子中判断偶数的杯子是否为空,不为空与同组的进行交换,共需要交换n/2次,考虑n为奇数对n/2进行向下取整即可。
b.由于最终偶数位置为空杯,奇数位置为满杯,从第一项开始遍历,如果在奇数位置出现空杯与后面偶数位置出现的第一个满杯进行交换,如果偶数位置出现满杯则与后面奇数出现的第一个空杯进行交换,每次交换使得两个位置满足条件,最坏情况是2n位置均为乱序,则需要交换n次,最好的情况为2n位置均满足条件,则交换次数为[0,n]4.1.7 Apply insertion sort to sort the list E, X, A, M, P, L, E in alphabetical order.4.2.1 Apply the DFS-based algorithm to solve the topological sorting problem for the following digraphs:答:(a) fe gb ca d从堆栈中弹出:efgbcad,反转输出为:dacbgfe(b) 由于存在回环b图不是无向回环图。
计算机导论 第四章 算法与数据结构期末测试习题与答案

1、算法的时间复杂度是指()。
A.算法执行过程中所需要的基本运算次数B.执行算法程序所需要的时间C.算法程序的长度D.算法程序中的指令条数正确答案:A2、算法的空间复杂度是指()。
A.算法程序的长度B.算法程序所占的存储空间C.算法执行过程中所需要的存储空间D.算法程序中的指令条数正确答案:C3、线性表采用链式存储的优点是()。
A.花费的存储空间较顺序储存少B.数据元素的物理顺序与逻辑顺序相同C.便于随机存取D.便于插入和删除操作正确答案:D4、下列叙述中正确的是()。
A.二叉树是线性结构B.线性链表是非线性结构C.线性表是线性结构D.栈与队列是非线性结构5、数据结构中,与所使用的计算机无关的是数据的()。
A.逻辑结构B.物理结构C.物理和存储结构D.存储结构正确答案:A6、存储结构是指()。
A.逻辑结构在计算机中的表示B.数据所占的存储空间量C.存储在外存中的数据D.数据在计算机中的顺序存储方式正确答案:A7、下列关于队列的叙述中,正确的是()。
A.队列是先进后出B.队列是先进先出C.在队列中只能插入数据D.在队列中只能删除数据正确答案:B8、下列关于栈的叙述中,正确的是()。
A.栈只能采用顺序存储B.栈可以采用链式存储,采用链式存储时不会产生栈溢出现象。
C.在栈中只能删除数据D.在栈中只能插入数据9、对长度为n的线性表进行顺序查找,查找成功时,最坏情况下所需要的比较次数为()。
A.n/2B.(n+1)/2C.n+lD.n正确答案:D10、下列叙述中,正确的是()。
A.以上三种说法都不对B.算法就是程序C.设计算法时只需要考虑结果的可靠性D.设计算法时只需要考虑数据结构的设计正确答案:A二、多选题1、如果进栈的顺序为e1,e2,e3,e4,则可能的出栈序列是()。
A.e3,e1,e4,e2B.e4,e3,e2,e1C.e1,e2,e3,e4D.e2,e4,e3,e1正确答案:B、C、D2、已知二叉树后序编历序列是dabec,中续遍历序列是debac,不是其前序编历序列是()。
算法设计与分析第三版第四章课后习题答案

算法设计与分析第三版第四章课后习题答案4.1 线性时间选择问题习题4.1问题描述:给定一个长度为n的无序数组A和一个整数k,设计一个算法,找出数组A中第k小的元素。
算法思路:本题可以使用快速选择算法来解决。
快速选择算法是基于快速排序算法的思想,通过递归地划分数组来找到第k小的元素。
具体步骤如下: 1. 选择数组A的一个随机元素x作为枢纽元。
2. 使用x将数组划分为两个子数组A1和A2,其中A1中的元素小于等于x,A2中的元素大于x。
3. 如果k等于A1的长度,那么x就是第k小的元素,返回x。
4. 如果k小于A1的长度,那么第k小的元素在A1中,递归地在A1中寻找第k小的元素。
5. 如果k大于A1的长度,那么第k小的元素在A2中,递归地在A2中寻找第k-A1的长度小的元素。
6. 递归地重复上述步骤,直到找到第k小的元素。
算法实现:public class LinearTimeSelection {public static int select(int[] A, int k) { return selectHelper(A, 0, A.length - 1, k);}private static int selectHelper(int[] A, int left, int right, int k) {if (left == right) {return A[left];}int pivotIndex = partition(A, left, righ t);int length = pivotIndex - left + 1;if (k == length) {return A[pivotIndex];} else if (k < length) {return selectHelper(A, left, pivotInd ex - 1, k);} else {return selectHelper(A, pivotIndex + 1, right, k - length);}}private static int partition(int[] A, int lef t, int right) {int pivotIndex = left + (right - left) / 2;int pivotValue = A[pivotIndex];int i = left;int j = right;while (i <= j) {while (A[i] < pivotValue) {i++;}while (A[j] > pivotValue) {j--;}if (i <= j) {swap(A, i, j);i++;j--;}}return i - 1;}private static void swap(int[] A, int i, int j) {int temp = A[i];A[i] = A[j];A[j] = temp;}}算法分析:快速选择算法的平均复杂度为O(n),最坏情况下的复杂度为O(n^2)。
第四章算法基础

第四章算法基础单项选择题(请在()内填写答案)()1. 算法可以没有__A_。
A: 输入B: 输出C: 输入和输出D:结束()2. 用于处理重复动作的结构是__C____。
A:顺序B: 判断C: 循环D: 逻辑()3. 将一组数据按照从小到大的顺序进行排列的算法称为__B____。
A: 查找B: 排序C: 递归D: 迭代()4. 要从一组数据中找到其中一个数据的算法称为___D___。
A: 迭代B: 排序C: 递归D: 查找()5. 流程图中的矩形框用于表示___C___。
A: 输入或输出B: 判断C: 计算或赋值D: 起止()6. 从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果的算法是___B___。
A: 列举B: 迭代C: 递归D: 查找()7. 将待排序的数据依次进行相邻两个数据的比较,如不符合排列顺序要求就交换的排序方法称为__A____。
A: 冒泡排序B: 选择排序C: 插入排序D: 二分排序()8. 对于有序列表使用的查找算法是__B____。
A: 顺序查找B: 折半查找C: 冒泡查找D: 排序查找()9. 算法的时间复杂度是指___A___。
A: 执行算法程序所需的时间B: 算法执行过程中的所需要的基本运算次数C: 算法程序中的指令条数D: 算法程序的长度()10. 算法执行过程中所需的存储空间称为算法的__B____。
A: 时间复杂度B: 空间复杂度C: 计算工作量D: 工作空间()11. 下面叙述正确的是___C___。
A: 算法的执行效率与数据的存储结构无关B: 算法的空间复杂度是指算法程序中的指令的条数C: 算法的无穷性是指算法必须在执行有限步后终止D: 以上3种描述都不对1。
C语言答案(删减版)

C语言答案()第一章C语言程序设计基础习题参考答案1-1 冯·诺依曼体系结构的基本原理:五大构成部分:输入、输出、CPU、控制器、存储器;程序存储、自动执行、逻辑判断功能;二进制的信息表示。
1-6 编辑、编译、链接、执行。
1-7 必须有一个主函数,它是程序执行的起点;一个C语言程序由函数构成;每一条可执行语句都必须由分号结束;函数的代码段必须由花括号对括住。
一个函数中的语句组由声明区和可执行语句区两部分构成。
1-8 三个一缩;每遇到一个结构时均缩格,每结束一个结构时回退;缩格格式必须对齐。
1-9 试给出以下问题的程序设计过程描述:1) 求两个数中之最大者。
#include<stdio.h>int main(void){float fA,fB;clrscr();printf("Please input two values(fA,fB)::"); /*输入要比较的两个数fA,fB*/scanf("%f,%f",&fA,&fB); /*格式化输入fA,fB*/if(fA>=fB) printf("the max is %f",fA);if(fA<fB) printf("the max is %f",fB);return 0;} /*main()函数结束*/2) 求三个数中之最大者。
#include<stdio.h>int main(void){float fA,fB,fC,fMax;printf("Please input three values(fA,fB,fC)::");/*fA,fB,fC是输入的3个数,fMax存放最大值*/scanf("%f,%f,%f",&fA,&fB,&fC);fMax=fA;/*假定fA最大*/if(fMax<fB) fMax=fB;if(fMax<fC) fMax=fC;printf("The max is %f\n",fMax);/*输出最大值*/return 0;} /*main()函数结束*/3) 求1+2+3+…+100,即。
数据结构与算法课程第4章的习题答案

case0: bonus=i*0.1;break;
case1: bonus=bonus1+(i-100000)*0.075;break;
case2:
case3:bonus=bonus2+(i-200000)*0.05;break;
case4:
case5:bonus=bonus4+(i-400000)*0.03;break;
第4章
4.1程序阅读题。以下程序运行结果是什么?
#includestdio.h
void main() {
int i1;
while (i15)
if (i3!2)continue;
else printf(d,i);
printf(\n);
}
结果为:2 5 8 11 14
4.2程序填空题。输出右边所示图案(共N行,N为奇数,此时N=7)。
}
注意:s、t不能定义为int,long型,因为这两种数据类型的范围都不超过21亿,无法容纳最后求的结果。
(6)求s=a+aa+aaa+…+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘输入控制。
程序流程图:
程序代码:
#include<stdio.h>
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
计算机导论复习资料

第一章计算工具1、现代计算机有哪些特点?答案:1.运算速度快、精度高2.具有储存与记忆能力2.具有逻辑判断能力3.自动化程度高2、计算机技术有哪些最基本的特征?答案:1.计算机硬件高速运算的特点2.计算机软件全面渗透的特点3、摩尔定律在计算机产业中引起了哪些效应?答案:1.引发了计算机系统软件规模不断增加、软件功能不断增强的同时,也导致了软件复杂性的增长速度甚至超过了摩尔定律2.引发了半导体工艺危机4、举例说明计算机硬件设备的主要技术指标?答案:1.性能指标2.功能指标3.可靠性指标4.兼容性指标第二章程序语言1、为什么有这么多程序语言?答案:1.计算机应用领域越来越广泛,程序语言需要解决的问题各不相同,但是没有一种程序语言可以姐居然所有问题2.程序语言与它们所要解决问题的领域相关,当问题随着环境而变化时,就需要创造语言来适用它3.编程新手与高手之间的技术差距非常大,许多程序语言对新手来说太抽象难学,但是对编程高手来说又是显得抽象不够4.不同程序语言之间的运行效率和开发成本各不相同2、程序语言有哪些基本数据类型?答案:1.整型2.浮点型(实数)3.字符型4.布尔型(逻辑型)3、简要说明软件周期的6个阶段。
答案:1.问题的定义及规划2.需求分析3.软件设计4.程序编码5.软件测试6.运行维护4、简要说明程序模块化设计的基本原则。
答案:1.把一个较大的程序划分为若干子程序,每一个程序是一个独立模块2.每一个模块又可划分为更小的子模块3.使软件具有一种层次性结构第三章计算思维1、简要说明什么是计算思维。
答案:计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为,它涵盖了计算机科学的一系列思维活动2、简要说明计算机解决问题的主要步骤。
答案:1.理解问题,寻找解决问题的条件2.对一些具有连续性质的现实问题,进行离散化处理3.从问题抽象出一个适当的数学模型,然后设计或选择解决这个数学模型的算法4.按照算法编写程序,并且对程序进行调试和测试,最后运行程序,直至得到最终的解答第四章算法基础1、简要说明算法的定义。
算法基础试题 答案

算法基础试题答案算法基础试题是计算机科学和信息技术领域中非常重要的考核内容,它涉及到了算法的设计与分析、数据结构等方面。
本文将回答算法基础试题,并提供相应的解答。
1. 什么是算法?算法是一系列解决问题的清晰指令或步骤,可用于执行特定任务或解决问题。
算法具有输入、输出和明确定义的计算过程。
它是计算机科学中非常重要的基础概念之一。
2. 算法的特性有哪些?算法具有以下基本特性:- 有穷性:算法必须在执行有限步骤后终止。
- 确定性:算法的每一步必须明确定义,不会产生二义性。
- 可行性:算法的每个步骤必须可以通过基本操作来实现。
- 输入:算法具有输入,以便为输入数据提供计算或处理。
- 输出:算法必须生成输出,作为解决方案或结果。
3. 算法的复杂性如何评估?算法的复杂性可以通过时间复杂度和空间复杂度进行评估。
- 时间复杂度表示算法执行所需的时间量。
- 空间复杂度表示算法在执行过程中所需的额外存储空间。
4. 常见的算法设计方法有哪些?常见的算法设计方法包括:- 贪心算法:每一步都选择当前最优解,以希望达到全局最优解。
- 动态规划:将问题分解为子问题,并利用子问题的解来构建原始问题的解。
- 分治法:将问题分解为多个子问题,然后将子问题的结果合并为原始问题的解。
- 回溯法:通过尝试不同的选择,直到找到满足条件的解。
5. 数据结构对算法的影响是什么?数据结构选择对算法的效率有重要影响。
不同的数据结构适用于不同类型的问题,并且可以用来优化算法的执行时间和空间需求。
例如,使用哈希表可以加速查找操作,而使用数组可以实现快速的顺序访问。
6. 算法的正确性如何验证?算法的正确性可以通过两种方法验证:- 通过数学证明:通过形式化的数学证明来验证算法的正确性。
- 通过测试和验证:通过对算法执行大量测试用例进行验证,以确保算法能够产生正确的结果。
测试用例应该覆盖各种情况,包括正常情况、边界情况和异常情况。
7. 如何选择适合的算法?选择适合的算法取决于问题的特性和要求。
算法导论答案 (4)

算法导论答案第一章:算法概述啊算法的定义算法是一系列解决问题的明确指令。
它是一个有穷步骤集,其中每个步骤或操作由确定性和可行性特征。
算法是通过将预期的输入转换为输出来解决问题的工具。
第二章:插入排序插入排序的思想插入排序是一种简单直观的排序算法,其基本思想是将待排序的序列分为已排序和未排序两部分,每次从未排序的部分中取出一个元素,并将其插入到已排序部分的正确位置,直到所有元素都被排序。
插入排序的算法实现以下是插入排序的伪代码:INSERTION-SORT(A)for j = 2 to A.lengthkey = A[j]// Insert A[j] into the sorted sequence A[1.. j-1].i = j - 1while i > 0 and A[i] > keyA[i + 1] = A[i]i = i - 1A[i + 1] = key插入排序的时间复杂度插入排序的时间复杂度为O(n^2),其中n是排序的元素个数。
虽然插入排序的最坏情况下的复杂度很高,但是对于小规模的数据集,插入排序是一种较快的排序算法。
第三章:分治策略分治策略的基本思想分治策略是一种解决问题的思想,它将问题的规模不断缩小,直到问题足够小而可以直接解决。
然后将子问题的解合并起来,得到原问题的解。
分治策略的应用实例一种经典的应用分治策略的算法是归并排序。
归并排序将待排序的序列划分为两个子序列,分别排序后再将两个有序子序列合并为一个有序序列。
以下是归并排序的伪代码:MERGE-SORT(A, p, r)if p < rq = floor((p + r) / 2)MERGE-SORT(A, p, q)MERGE-SORT(A, q + 1, r)MERGE(A, p, q, r)MERGE(A, p, q, r)n1 = q - p + 1n2 = r - qlet L[1..n1+1] and R[1..n2+1] be new arraysfor i = 1 to n1L[i] = A[p + i - 1]for j = 1 to n2R[j] = A[q + j]L[n1 + 1] = infinityR[n2 + 1] = infinityi = 1j = 1for k = p to rif L[i] <= R[j]A[k] = L[i]i = i + 1elseA[k] = R[j]j = j + 1分治策略的时间复杂度归并排序的时间复杂度为O(nlogn),其中n是待排序序列的长度。
算法分析习题参考答案第四章

第四章作业 部分参考答案1. 设有n 个顾客同时等待一项服务。
顾客i 需要的服务时间为n i t i ≤≤1,。
应该如何安排n 个顾客的服务次序才能使总的等待时间达到最小?总的等待时间是各顾客等待服务的时间的总和。
试给出你的做法的理由(证明)。
策略:对 1i t i n ≤≤进行排序,,21n i i i t t t ≤≤≤ 然后按照递增顺序依次服务12,,...,ni i i 即可。
解析:设得到服务的顾客的顺序为12,,...,n j j j ,则总等待时间为,2)1(121n n j j j j t t t n nt T +++-+=- 则在总等待时间T 中1j t 的权重最大,jn t 的权重最小。
故让所需时间少的顾客先得到服务可以减少总等待时间。
证明:设,21n i i i t t t ≤≤≤ ,下证明当按照不减顺序依次服务时,为最优策略。
记按照n i i i 21次序服务时,等待时间为T ,下证明任意互换两者的次序,T都不减。
即假设互换j i ,)(j i <两位顾客的次序,互换后等待总时间为T ~,则有.~T T ≥由于,))(())(()2)(2()1)(1(21n j i i i i i i t j t j n i t i n t n t n T +--++--++--+--=,))(())(()2)(2()1)(1(~21n i j i i i i i t j t j n i t i n t n t n T +--++--++--+--=则有.0))((~≥--=-i j i i t t i j T T同理可证其它次序,都可以由n i i i 21经过有限次两两调换顺序后得到,而每次交换,总时间不减,从而n i i i 21为最优策略。
2. 字符h a ~出现的频率分布恰好是前8个Fibonacci 数,它们的Huffman 编码是什么?将结果推广到n 个字符的频率分布恰好是前n 个Fibonacci 数的情形。
第04章的习题参考答案

2)穿好衣服、裤子及鞋子等;
3)下床;
4)洗漱(包括洗脸、刷牙等);
5)吃早餐(包括饭后洗碗等工作);
6)上课学习;
7)吃午餐;
8)午休;
程序结构应当怎样修改才能适应?
(2)又假定搬砖人的类别数也在变化时又如何处理?
(3)假定每人每次搬砖数已知,能否告知所需的最少人数及每类人的搬砖数?
(4)假定每个人每次允许搬砖的块数可以少于规定数,如何搬才能最省时间?
解:(1)有nMale个人和num块砖,在男、女和孩子每次搬砖的块数未知或可变的情
6)fac=1,然后转7);
7)输出n!的值(n非法时写‘非法’)
4-13 对例4-15,请绘制算法的PAD流程图和传统流程图。
PAD流程图:
传统流程图:
4-14 例4-15只解决了36个人搬36块砖的情形。请思考这样一些问题:
(1)假定nMale个人和num块砖,男、女和孩子每次搬砖的块数未知或可变,算法或
if(fa<fb) //如果fa<fb,将fb的值赋给中间变量temp,即temp=fb;
temp=fb;
else //否则,将fa的值赋给temp,即temp=fa;
temp=fa;
if(temp>fc) //如果中间变量temp>fc,则将temp的值赋给max,即max=temp;
4-6 试述算法的组成要素、算法的基本性质。
解:算法的实质是对问题求解方法和过程的描述,它由解决问题的基本操作及控制操作
过程次序的控制结构组成。其中基本操作包括算术、关系、逻辑等基本运算和输入输出以及
函数、位操作、文件操作等;控制结构主要是顺序、选择和循环三种基本的控制结构。
04第四章蚁群算法

第四章蚁群算法习题与答案1.填空题(1) _________________________ 蚁群算法的缩写是_____________ ,它模拟了自然界中_________________________ 过程而提出,可以解决_______________ 问题。
(2) __________________________________________ 蚁群算法需要一个记忆空间,称为__________________________________________ ,表示已经过的路径。
判断选择城市的主要依据有 ___________ 和_________ ,前者代表__________ 愿望, 后者代表_________ 愿望,反映了问题求解过程中经验的积累。
解释:本题考查蚁群算法的基础知识。
具体内容请参考课堂视频“第4章蚁群算法”及其课件。
答案:(1)ACO,蚂蚁觅食,组合优化(2)禁忌列表,能见度,虚拟信息素,启发式,获知式2.考虑如下情形:分头沿着两条长度不同的路径去食物源,当到达食物源时哪条路径会以较高的概率被其选择?论证你的答案。
解释:本题考查蚁群算法中信息素的特点与作用。
具体内容请参考课堂视频“第4章蚁群算法”及其课件。
答案:路径长度短的会以较高的概率被选择。
具体论证如下:单位时间内通过路径短的蚂蚁数量大于通过路径长的蚂蚁数量,这意味着短路径上遗留的信息素浓度比较髙,山于蚂蚁倾向于朝着信息素浓度高的方向移动, 所以到后期选择短路径的蚂蚁会越来越多。
于是,蚁群的集体行为表现出一种信息正反馈现象,即最短路径上走过的蚂蚁越多,信息素浓度也就越高,后来的蚂蚁选择该路径的概率就越大,蚂蚁个体之间就是通过这种信息的交流寻找食物和蚁穴之间最短路径的。
3.探讨在信息素释放公式中遗忘因子的重要性。
解释:本题考查蚁群算法中信息素挥发因子的作用。
具体内容请参考课堂视频“第4章蚁群算法”及其课件。
答案:参数Q表示信息素挥发因子,p的大小从另一个侧面反映了蚂蚁群体中个体间相互影响的强弱,它直接关系到蚁群算法的全局搜索能力及收敛速度;参数1-Q表示信息素残留因子,反映了蚂蚁个体之间相互影响的强弱。
第4讲算法初步练习含答案

第4讲算法初步一、选择题1.执行如图所示的算法框图,则输出的S 值是( ).A .-1B.23C.32D .4解析 根据算法框图,算法执行的步骤为S =4,i =1<9;S =-1,i =2<9;S =23,i =3<9;S =32,i =4<9;S =4,i =5<9;S =-1,i =6<9,所以S 的周期为4,即i =9时S =4. 答案 D2.如图给出的是计算12+14+16+…+120的值的一个算法框图,其中判断框内应填入的条件是( ).A .i >10B .i <10C .i >20D .i <20解析 依题意,得12+14+16+…+120可表示为数列⎩⎨⎧⎭⎬⎫12n 的前10项和,结合题目中的算法框图知,判断框内应填入的条件是“i >10”,选A. 答案 A3.某客运部门规定甲、乙两地之间旅客托运行李的费用为:不超过25 kg 按0.5元/kg 收费,超过25 kg 的部分按0.8元/kg 收费,计算收费的算法框图如图所示,则①②处应填( ).A .y =0.8x y =0.5xB .y =0.5x y =0.8xC .y =25×0.5+(x -25)×0.8 y =0.5xD .y =25×0.5+0.8x y =0.8x解析 设行李的重量为x kg ,则所需费用为y =⎩⎨⎧0.5x ,0<x ≤25,12.5+0.8(x -25),x >25,所以选C. 答案 C4.阅读如图所示的算法框图,输出的S 值为( ).A .0B .1+ 2C .1+22D.2-1解析 算法框图的功能是计算sin π4+sin 2π4+sin 3π4+sin 4π4+sin 5π4+sin 6π4+sin 7π4+sin 8π4+sin 9π4+sin 10π4+sin 11π4的值.而sin π4+sin 2π4+sin 3π4+sin 4π4+sin 5π4+sin 6π4+sin 7π4+sin 8π4=0,sin 9π4+sin 10π4+sin 11π4=1+ 2. 答案 B5.运行右图所示的算法框图,若输出结果为137,则判断框中应该填的条件是( ). A .k >5 B .k >6 C .k >7 D .k >8解析 据题意令S =1+11×2+12×3+…+1k ×(k +1)=1+1-12+12-13+…+1k-1k+1=2-1k+1,令S=2-1k+1=137,解得k=6,故判断框应填入k>6.答案 B6.执行下面的算法框图,如果输入a=4,那么输出的n的值为().A.2 B.3C.4 D.5解析当a=4时,第一次P=0+40=1,Q=3,n=1,第二次P=1+41=5,Q=7,n=2,第三次P=5+42=21,Q=15,n=3,此时P≤Q不成立,输出n=3,选B.答案 B7.执行如图所示的算法框图,则输出的λ是().A .-4B .-2C .0D .-2或0解析 依题意,若λa +b 与b 垂直,则有(λa +b )·b =4(λ+4)-2(-3λ-2)=0,解得λ=-2;若λa +b 与b 平行,则有-2(λ+4)=4(-3λ-2),解得λ=0.结合题中的算法框图,输出的λ是-2,选B. 答案 B8.按如图所示的算法框图运算,若输出k =2,则输入x 的取值范围是( ).A .19≤x <200B .x <19C .19<x <200D .x ≥200解析 由框图可知,输出k =2,需满足 ⎩⎨⎧10x +10<2 010,10(10x +10)+10≥2 010, 解得19≤x <200,故选A. 答案 A 二、填空题9.阅读如图所示的算法框图,运行相应的算法,输出的s 值等于________.解析 第一次循环:s =1,k =1<4,s =2×1-1=1,k =1+1=2;第二次循环:k=2<4,s=2×1-2=0,k=2+1=3;第三次循环:k=3<4,s=2×0-3=-3,k=3+1=4;当k=4时,k<4不成立,循环结束,此时s=-3.答案-310.阅读如图所示的算法框图,运行相应的算法,输出的结果s=________.解析按算法框图循环到n=3时输出结果.当n=1时,s=1,a=3;当n=2时,s=1+3=4,a=5;当n=3时,s=4+5=9,a=7,所以输出s=9.答案911.如果执行如图所示的算法框图,输入x=-1,n=3,则输出的数S=________.解析逐次运算的结果是S=6×(-1)+3=-3,i=1;S=(-3)×(-1)+2=5,i=0;S=-5+1=-4,i=-1,结束循环,故输出的S=-4.答案-412.下图是某算法的算法框图,则算法运行后输出的结果是________.解析由题意知,运行一次后T=1,k=2,运行两次后T=1,k=3,运行三次后T=1,k=4,运行四次后T=2,k=5,运行五次后T=3,k=6,退出循环,此时T的值为3.答案 313.在数列{a n}中,a1=1,a n+1=a n+n,要计算此数列前30项的和,现已给出了该问题算法的算法框图(如图所示),请在图中判断框内(1)处和执行框中的(2)处填上合适的语句,使之能完成该题算法功能.(1)________________;(2)________________.解析因为是求30个数的和,故循环体应执行30次,其中i是计数变量,因此判断框内的条件就是限制计数变量i的,故应为i>30.算法中的变量p实质是表示参与求和的各个数,由于它也是变化的,且满足第i个数比其前一个数大i-1,第i+1个数比其前一个数大i,故应有p=p+i.故(1)处应填i>30;(2)处应填p=p+i.答案(1)i>30(2)p=p+i14.下图是一个算法框图,则输出的k的值是________.解析 由k 2-5k +4>0得k <1或k >4,所以k =5. 答案 515.对任意非零实数a ,b ,若a ⊗b 的运算原理如下算法框图所示,则3⊗2=________.解析 ∵a =3,b =2,则a >b ,∴输出a +1b =3+12=2. 答案 216.如图甲是某市有关部门根据对当地干部的月收入情况调查后画出的样本频率分布直方图,已知图甲中从左向右第一组的频数为4 000.在样本中记月收入在[1 000,1 500),[1 500,2 000),[2 000,2 500),[2 500,3 000),[3 000,3 500),[3 500,4 000]的人数依次为A 1、A 2、…、A 6.图乙是统计图甲中月工资收入在一定范围内的人数的算法框图,则样本的容量n =________;图乙输出的S =________.(用数字作答)图甲图乙解析 ∵月收入在[1 000,1 500)的频率为0.000 8×500=0.4,且有4 000人,∴样本的容量n =4 0000.4=10 000,由题图乙知输出的S =A 2+A 3+…+A 6=10 000-4 000=6 000. 答案 10 000 6 000。
大学计算机第四章 练习题答案

第四章练习题答案(1) 下面叙述正确的是______ 。
(C)A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)以上三种描述都不对(2) 算法的时间复杂度是指 ______ 。
(C)A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法执行过程中所需要的基本运算次数D. 算法程序中的指令条数(3) 算法的空间复杂度是指 ______ 。
(D)A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间(4) 下列叙述中正确的是______ 。
(B)A) 算法的效率只与问题的规模有关,而与数据的存储结构无关B) 算法的时间复杂度是指执行算法所需要的计算工作量C) 数据的逻辑结构与存储结构是一一对应的D) 算法的时间复杂度与空间复杂度一定相关(5)算法的有穷性是指 ______ 。
( A )A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6) 数据的存储结构是指______ 。
( B )A. 数据所占的存储空间量B. 数据的逻辑结构在计算机中的表示C. 数据在计算机中的顺序存储方式D. 存储在外存中的数据(7) 下面描述线性表的链式存储结构错误的是 ______ 。
(A)A)线性表顺序存储B)线性表随机存储C)线性表的链式存储结构也称为线性链表D)线性表的链式存储结构只能顺序存取(8)数据的存储结构是指 ______ 。
( B)A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据(9) 下列叙述中正确的是______ 。
(D )A)一个逻辑数据结构只能有一种存储结构B)数据的逻辑结构属于线性结构,存储结构属于非线性结构C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(10)下列叙述中正确的是 ______ 。
第4章 递归算法(C++版)

【例3】Hanoi汉诺塔问题
有N个圆盘,依半径大小(半径都不同),自下而上套在A柱上,每次只允 许移动最上面一个盘子到另外的柱子上去(除A柱外,还有B柱和C柱,开始时这 两个柱子上无盘子),但绝不允许发生柱子上出现大盘子在上,小盘子在下的情 况,现要求设计将A柱子上N个盘子搬移到C柱去的方法。 【算法分析】 本题是典型的递归程序设计题。 (1)当N=1 时,只有一个盘子,只需要移动一次:A—>C; (2)当N=2时,则需要移动三次: A------ 1 ------> B, A ------ 2 ------> C, B ------ 1------> C. (3)如果N=3,则具体移动步骤为:
【参考程序】 #include<iostream> #include<cstdlib> using namespace std; int a[11]; void search(int,int,int); int main() //主程序 { int k,x,L=1,R=10; cout<<"输入10个从大到小顺序的数:"<<endl; for (k=1;k<=10;k++) cin>>a[k]; cin>>x; search(x,L,R); system("pause"); } void search(int x,int top,int bot) //二分查找递归过程 { int mid; if (top<=bot) { mid=(top+bot)/2; //求中间数的位置
假设把第3步,第4步,第7步抽出来就相当于N=2的情况(把上面2片 捆在一起,视为一片):
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章算法基础
单项选择题(请在()内填写答案)
()1. 算法可以没有______。
A: 输入B: 输出C: 输入和输出D:结束
()2. 用于处理重复动作的结构是______。
A:顺序B: 判断C: 循环D: 逻辑
()3. 将一组数据按照从小到大的顺序进行排列的算法称为______。
A: 查找B: 排序C: 递归D: 迭代
()4. 要从一组数据中找到其中一个数据的算法称为______。
A: 迭代B: 排序C: 递归D: 查找
()5. 流程图中的矩形框用于表示______。
A: 输入或输出B: 判断C: 计算或赋值D: 起止
()6. 从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果的算法是______。
A: 列举B: 迭代C: 递归D: 查找
()7. 将待排序的数据依次进行相邻两个数据的比较,如不符合排列顺序要求就交换的排序方法称为______。
A: 冒泡排序B: 选择排序C: 插入排序D: 二分排序
()8. 对于有序列表使用的查找算法是______。
A: 顺序查找B: 折半查找C: 冒泡查找D: 排序查找
()9. 算法的时间复杂度是指______。
A: 执行算法程序所需的时间B: 算法执行过程中的所需要的基本运算次数
C: 算法程序中的指令条数D: 算法程序的长度
()10. 算法执行过程中所需的存储空间称为算法的______。
A: 时间复杂度B: 空间复杂度C: 计算工作量D: 工作空间
()11. 下面叙述正确的是______。
A: 算法的执行效率与数据的存储结构无关
B: 算法的空间复杂度是指算法程序中的指令的条数
C: 算法的无穷性是指算法必须在执行有限步后终止
D: 以上3种描述都不对
1。