算法分析_贪心算法解汽车加油问题_实验报告

算法分析_贪心算法解汽车加油问题_实验报告
算法分析_贪心算法解汽车加油问题_实验报告

综合性、设计性实验报告

姓名唐艳学号200908001124

专业计算机科学与技术班级2009级班

实验课程名称算法设计与分析

指导教师及职称吕兰兰讲师

开课学期2011 至2012 学年上学期

上课时间2011年10 月18 日

湖南科技学院教务处编印

一、实验设计方案

实验名称:贪心算法实例编程实验时间:2011-11-08

小组合作:是○否●小组成员:无

1、实验目的:

1)理解贪心算法的概念

2)掌握贪心算法的基本要素

3)掌握设计贪心算法的一般步骤

4)针对具体问题,能应用贪心算法设计有效算法

5)用C++实现算法,并且分析算法的效率

2、实验设备及材料:(注意:请自行填写,按实际情况写,各位同学的实验报告应有所区别)

硬件设备: PC机一台

机器配置:良好

操作系统:windows 7

开发工具:VC++6.0

3、实验内容:

①问题描述

一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并说明算法能产生一个最优解。

②编程任务

对于给定的n和k个加油站位置,编程计算最少加油次数。

③样例

例如,现在汽车加满油之后可跑7公里,途中共有7个加油站,各个加油站之间的距离为1公里、2公里、3公里、4公里、5公里、1公里、6公里、6公里。

那么,汽车可在____第三,第四,第五,第七个加油站______(哪几个加油站)加油,使沿途加油次数最少,只需加油___4_____次。

4、实验方法步骤及注意事项:(注意:此部分为本实验的关键部分,请自行填写,不得雷同!)

①实验步骤(请参考教材自行总结归纳之后再认真填写)

[问题分析]

由于汽车是由始向终点方向开的,我们最大的麻烦就是不知道在哪个加油站加油可以使我们既可以到达终点又可以使我们加油次数最少。

提出问题是解决的开始.为了着手解决遇到的困难,取得最优方案。我们可以假设不到万不得已我们不加油,即除非我们油箱里的油不足以开到下一个加油站,我们才加一次油。在局部找到一个最优的解。却每加一次油我们可以看作是一个新的起点,用相同的方法进行下去。最终将各个阶段的最优解合并为原问题的解得到我们原问题的求解。

加油站贪心算法设计(C++):

#include

#include"iostream.h"

#include

int greed(int n,int k,int *a)

{

int sum=0,count=0;

ifstream fin;

fin.open("D:\\input.txt");

ofstream fout("D:\\output.txt");

for(int i=1;i<=k+1;i++)

{

sum+=a[i];

if(sum>n)

{count++;sum=0;i--;

fout<

}

return count;

}

int main()

{

int n,k,i,number;

int a[100];

ifstream fin;

fin.open("D:\\input.txt");

ofstream fout("D:\\output.txt");

fin>>n;

fin>>k;

for(i=1;i<=k+1;i++)

fin>>a[i];

if(a[i]>n)

printf("No Soluthion!");

else

{ number=greed(n,k,a);

fout<

②解题思路(注意:以下部分仅为提示,请自行填写;若表格不够,可自行拉伸。)

1)确定求解汽车加油问题的贪心选择策略。

2)给出使用贪心算法求解汽车加油问题的算法,用C++语言描述。

要求:求解汽车加油问题时,不仅要求出所需的最小加油次数(即最优值),而且还要求出应在哪些加油站加油(即最优解)。

3)证明上述算法的正确性。(可选)

需证明:汽车加油问题始终存在以贪心选择开始的最优解,以及汽车加油问题具有最优子结构性质。

贪心算法正确性证明:

●贪心选择性质

所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。对于一个具体的问题,要确定它是否具有贪心性质,我们必须证明每一步所作的贪心选择最终导致问题的一个整体最优解。根据贪心选择,在该题中,为使加油次数最少就会选择距离加满油得点远一些的加油站去加油,因此,加油次数最少满足贪心选择性质。

●最优子结构性质:

当一个问题大的最优解包含着它的子问题的最优解时,称该问题具有最优子结构性质。由于(b[1],b[2],……b[n])是这段路程加油次数最少的一个满足贪心选择性质的最优解,则易知若在第一个加油站加油时,b[1]=1,则(b[2],b[3],……b[n])是从a[2]到a[n]这段路程上加油次数最少且这段路程上的加油站个数为(a[2],a[3],……a[n])的最优解,再者,每个过程从加油开始行驶到再次加油满足贪心且每一次加油后相当于与起点具有相同的条件,每个过程都是相同且独立,也就是说加油次数最少具有最优子结构性质。

5.实验数据处理方法:

①数据输入

由文件input.txt给出输入数据。第一行有2 个正整数n和k,表示汽车加满油后可行驶

n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第

k-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第k+1 个加油站表示

目的地。

②结果输出

将编程计算出的最少加油次数以及应在哪些加油站加油输出到文件output.txt。如果无法到达目的地,则输出”No Solution”。

二、实验报告

6.参考文献:

《计算机算法设计与分析(第3版)》 王晓东著 电子工业出版社

《算法设计与实验题解》王晓东著 电子工业出版社

指导老师对实验设计方案的意见:

指导老师签名:吕兰兰

2011年 11 月 10 日 1、实验目的、设备与材料、实验内容、实验方法步骤见实验设计方案

2、实验现象、数据及结果(请自行填写真实结果)

序号 输入文件(input.txt) 输出文件(output.txt) 0. 7 7 1 2 3 4 5 1 6 6 4 1. 3708 6 33 20 83 77 26 59 67 0 2. 630 37 46 43 94 77 45 98 11 60 15 42 7 69 61 54 51 65 50 16 28 60 91 17 44 54 93 52 32 54 41 80 88 54 55 27 58 59 92 73 3 3. 181 46 54 94 61 51 51 57 73 96 32 45 97 73 44 88 25 14 53 59 79 41 63 100 25 57 35 55 61 88 54 40 77 1 53 86 67 59 13 56

96 56 75 45 37 76 99 41 94 18

3、对实验现象、数据及观察结果的分析与讨论:

(对输入数据和相应输出结果按照你所设计的算法进行分析,举1~2个例子即可。要求分析出一个输入的最优解。)

例:

输入:7 8

1 3 5 1 5 4 1 6 7

输出:5

4、结论:

(包括:使用的算法设计方法是否正确,是否也可以用其他方法解决,算法效率如何?

程序的编译是否通过,程序的输出结果是否正确等)

该实验使用的算法基本正确,程序编译通过。程序结果正确。时间复杂度为O(n)。

5、实验总结

1)、本次实验成败之处及其原因分析:

注:从技术角度来分析实验的成功或失败,分析实验过程中出现了哪些问题,程序出现了什么错误,出现错误的具体原因是什么,以及是如何解决的。

本次实验基本成功。只是最后输出加油的次数的数据覆盖了之前写入output文件中的在第1次在哪个加油站加油的数据。不知道应该在文件打开的语句中修改,使它可以在已经存在的文件中追加数据,而不是覆盖。

2)、本实验的关键环节及改进措施:

①做好本实验需要把握的关键环节:

在greed函数中,判断sum>n后,i的次数要减1。因为在距离大于可行驶的距离之前就应该之前的加油站加油了。

(如实填写,忌文不对题)

②若重做本实验,为实现预期效果,仪器操作和实验步骤应如何改善:

我认为此贪心算法不需要再改进,够贪心了。

(如实填写,忌文不对题)

3)、对实验的自我评价:

对文件的输入输出的使用还没完全掌握。

(注:自己的体会、感想和收获等)

指导老师评语及得分:

签名:吕兰兰

2011年11 月15 日

考研数据结构必须掌握的知识点与算法-打印版

《数据结构》必须掌握的知识点与算法 第一章绪论 1、算法的五个重要特性(有穷性、确定性、可行性、输入、输出) 2、算法设计的要求(正确性、可读性、健壮性、效率与低存储量需求) 3、算法与程序的关系: (1)一个程序不一定满足有穷性。例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。 (2)程序中的指令必须是机器可执行的,而算法中的指令则无此限制。算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。 (3)一个算法若用程序设计语言来描述,则它就是一个程序。 4、算法的时间复杂度的表示与计算(这个比较复杂,具体看算法本身,一般关心其循环的次数与N的关系、函数递归的计算) 第二章线性表 1、线性表的特点: (1)存在唯一的第一个元素;(这一点决定了图不是线性表) (2)存在唯一的最后一个元素; (3)除第一个元素外,其它均只有一个前驱(这一点决定了树不是线性表) (4)除最后一个元素外,其它均只有一个后继。 2、线性表有两种表示:顺序表示(数组)、链式表示(链表),栈、队列都是线性表,他们都可以用数组、链表来实现。 3、顺序表示的线性表(数组)地址计算方法: (1)一维数组,设DataType a[N]的首地址为A0,每一个数据(DataType类型)占m个字节,则a[k]的地址为:A a[k]=A0+m*k(其直接意义就是求在数据a[k]的前面有多少个元素,每个元素占m个字节) (2)多维数组,以三维数组为例,设DataType a[M][N][P]的首地址为A000,每一个数据(DataType 类型)占m个字节,则在元素a[i][j][k]的前面共有元素个数为:M*N*i+N*j+k,其其地址为: A a[i][j][k]=A000+m*(M*N*i+N*j+k); 4、线性表的归并排序: 设两个线性表均已经按非递减顺序排好序,现要将两者合并为一个线性表,并仍然接非递减顺序。可见算法2.2 5、掌握线性表的顺序表示法定义代码,各元素的含义; 6、顺序线性表的初始化过程,可见算法2.3 7、顺序线性表的元素的查找。 8、顺序线性表的元素的插入算法,注意其对于当原来的存储空间满了后,追加存储空间(就是每次增加若干个空间,一般为10个)的处理过程,可见算法2.4 9、顺序线性表的删除元素过程,可见算法2.5 10、顺序线性表的归并算法,可见算法2.7 11、链表的定义代码,各元素的含义,并能用图形象地表示出来,以利分析; 12、链表中元素的查找 13、链表的元素插入,算法与图解,可见算法2.9 14、链表的元素的删除,算法与图解,可见算法2.10 15、链表的创建过程,算法与图解,注意,链表有两种(向表头生长、向表尾生长,分别用在栈、队列中),但他们的区别就是在创建时就产生了,可见算法2.11 16、链表的归并算法,可见算法2.12 17、建议了解所谓的静态单链表(即用数组的形式来实现链表的操作),可见算法2.13 18、循环链表的定义,意义 19、循环链表的构造算法(其与单链表的区别是在创建时确定的)、图解

算法设计与分析实验报告贪心算法

算法设计与分析实验报告 贪心算法 班级:2013156 学号:201315614 姓名:张春阳哈夫曼编码 代码 #include float small1,small2; int flag1,flag2,count; typedefstructHuffmanTree { float weight; intlchild,rchild,parent; }huffman; huffmanhuffmantree[100]; void CreatHuffmanTree(intn,int m) { inti; void select(); printf("请输入%d个节点的权值:",n); for(i=0;i

printf("\n"); for(i=0;i

线性规划与网络流24题 -- 15汽车加油行驶问题

算法实现题8-15 汽车加油行驶问题(习题8-28) ?问题描述: 给定一个N*N的方形网格,设其左上角为起点◎,坐标为(1,1),X轴向右为正,Y 轴向下为正,每个方格边长为1,如图所示。一辆汽车从起点◎出发驶向右下角终点▲,其坐标为(N,N)。在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油。汽车在行驶过程中应遵守如下规则: (1)汽车只能沿网格边行驶,装满油后能行驶K条网格边。出发时汽车已装满油,在起点与终点处不设油库。 (2)汽车经过一条网格边时,若其X坐标或Y坐标减小,则应付费用B,否则免付费用。 (3)汽车在行驶过程中遇油库则应加满油并付加油费用A。 (4)在需要时可在网格点处增设油库,并付增设油库费用C(不含加油费用A)。 (5)(1)~(4)中的各数N、K、A、B、C均为正整数,且满足约束:2 £ N £ 100,2 £ K £ 10。 设计一个算法,求出汽车从起点出发到达终点的一条所付费用最少的行驶路线。 ?编程任务: 对于给定的交通网格,计算汽车从起点出发到达终点的一条所付费用最少的行驶路线。 ?数据输入: 由文件input.txt提供输入数据。文件的第一行是N,K,A,B,C的值。第二行起是一个N*N的0-1方阵,每行N个值,至N+1行结束。方阵的第i行第j列处的值为1表示在网格交叉点(i,j)处设置了一个油库,为0时表示未设油库。各行相邻两个数以空格分隔。 ?结果输出:

程序运行结束时,将最小费用输出到文件output.txt中。 输入文件示例输出文件示例 input.txt output.txt 12 9 3 2 3 6 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0

专题1:算法初步知识点及典型例题(原卷版)

专题1:算法初步知识点及典型例题(原卷版) 【知识梳理】 知识点一、算法 1.算法的概念 (1)古代定义:指的是用阿拉伯数字进行算术运算的过程。 (2)现代定义:算法通常是指按照一定规则解决某一类问题的明确和有限的步骤。 (3)应用:算法通常可以编成计算机程序,让计算机执行并解决问题。 2.算法的特征: ①指向性:能解决某一个或某一类问题; ②精确性:每一步操作的内容和顺序必须是明确的;算法的每一步都应当做到准确无误,从开始的“第一步”直到“最后一步”之间做到环环相扣,分工明确.“前一步”是“后一步”的前提,“后一步”是“前一步”的继续. ③有限性:必须在有限步内结束并返回一个结果;算法要有明确的开始和结束,当到达终止步骤时所要解决的问题必须有明确的结果,也就是说必须在有限步内完成任务,不能无限制的持续进行. ④构造性:一个问题可以构造多个算法,算法有优劣之分。 3.算法的表示方法: (1) 用自然语言表示算法: 优点是使用日常用语, 通俗易懂;缺点是文字冗长, 容易出现歧义; (2) 用程序框图表示算法:用图框表示各种操作,优点是直观形象, 易于理解。 注:泛泛地谈算法是没有意义的,算法一定以问题为载体。 例1.下面给出一个问题的算法: S1输入x; S2若x≤2,则执行S3;否则,执行S4; S3输出-2x-1; S4输出x2-6x+3. 问题: (1)这个算法解决的是什么问题? (2)当输入的x值为多大时,输出的数值最小? 知识点二:流程图 1. 流程图的概念:

流程图,是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符合表示操作的内容,流程线表示操作的先后次序。 2. 图形符号名称含义 开始/结束框 用于表示算法的开始与结束 输入/输出框 用于表示数据的输入或结果的输出 处理框描述基本的操作功能,如“赋值”操作、数学 运算等 判断框判断某一条件是否成立,成立时在出口处标明 “是”或“Y”;不成立时标明“否”或“N” 流程线 表示流程的路径和方向 连接点 用于连接另一页或另一部分的框图 注释框 框中内容是对某部分流程图做的解释说明 3. (1)使用标准的框图的符号; (2)框图一般按从上到下、从左到右的方向画; (3)除判断框图外,大多数框图符号只有一个进入点和一个退出点。判断框是具有超过一个退出点的唯一符号; (4)一种判断框是“是”与“不是”两分支的判断,而且有且仅有两个结果;另一种是多分支判断,有几种不同的结果; (5)在图形符号内描述的语言要非常简练清楚。 4.算法的三种基本逻辑结构: (1)顺序结构:由若干个按从上到下的顺序依次进行的处理步骤(语句或框)组成。这是任何一个算法都离不开的基本结构。 (2)条件结构:算法流程中通过对一些条件的判断,根据条件是否成立而取不同的分支流向的结构。它是依据指定条件选择执行不同指令的控制结构。 (3)循环结构:根据指定条件,决定是否重复执行一条或多条指令的控制结构称为循环结构。 知识点三:基本算法语句 程序设计语言由一些有特定含义的程序语句构成,与算法程序框图的三种基本结构相对应,任何程序设计语言都包含输入输出语句、赋值语句、条件语句和循环语句。以下均为BASIC

北京理工大学《数据结构与算法设计》实验报告实验一

《数据结构与算法设计》 实验报告 ——实验一 学院: 班级: 学号: 姓名:

一、实验目的 1.通过实验实践、巩固线性表的相关操作; 2.熟悉VC环境,加强编程、调试的练习; 3.用C语言编写函数,实现循环链表的建立、插入、删除、取数据等基本操作; 4.理论知识与实际问题相结合,利用上述基本操作实现约瑟夫环。 二、实验内容 1、采用单向环表实现约瑟夫环。 请按以下要求编程实现: ①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的 结点编号依次为1,2,……,m。 ②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到 第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点 的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出 了这个环表的全部结点为止。 三、程序设计 1、概要设计 为实现上述程序功能,应用单向环表寄存编号,为此需要建立一个抽象数据类型:单向环表。 (1)、单向环表的抽象数据类型定义为: ADT Joseph{ 数据对象:D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0} 数据关系:R1={ |ai∈D,i=1,2,……,n} 基本操作: create(&L,n) 操作结果:构造一个有n个结点的单向环表L。 show(L) 初始条件:单向环表L已存在。 操作结果:按顺序在屏幕上输出L的数据元素。 Josephf( L,m,s,n) 初始条件:单向环表L已存在, s>0,n>0,s

算法分析_实验报告3

兰州交通大学 《算法设计与分析》 实验报告3 题目03-动态规划 专业计算机科学与技术 班级计算机科学与技术2016-02班学号201610333 姓名石博洋

第3章动态规划 1. 实验题目与环境 1.1实验题目及要求 (1) 用代码实现矩阵连乘问题。 给定n个矩阵{A1,A2,…,A n},其中A i与A i+1是可乘的,i=1,2,…,n-1。考察这n 个矩阵的连乘积A1A2…A n。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序,这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,则可以依此次序反复调用2个矩阵相乘的标准算法(有改进的方法,这里不考虑)计算出矩阵连乘积。 确定一个计算顺序,使得需要的乘的次数最少。 (2) 用代码实现最长公共子序列问题。 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X= < x1, x2,…, xm>,则另一序列Z= < z1, z2,…, zk>是X的子序列是指存在一个严格递增的下标序列< i1, i2,…, ik>,使得对于所有j=1,2,…,k有Xij=Zj 。例如,序列Z=是序列X=的子序列,相应的递增下标序列为<2,3,5,7>。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。例如,若X= < A, B, C, B, D, A, B>和Y= < B, D, C, A, B, A>,则序列是X和Y的一个公共子序列,序列也是X和Y的一个公共子序列。而且,后者是X和Y的一个最长公共子序列,因为X和Y没有长度大于4的公共子序列。 (3) 0-1背包问题。 现有n种物品,对1<=i<=n,已知第i种物品的重量为正整数W i,价值为正整数V i,背包能承受的最大载重量为正整数W,现要求找出这n种物品的一个子集,使得子集中物品的总重量不超过W且总价值尽量大。(注意:这里对每种物品或者全取或者一点都不取,不允许只取一部分) 使用动态规划使得装入背包的物品价值之和最大。 1.2实验环境: CPU:Intel(R) Core(TM) i3-2120 3.3GHZ 内存:12GB 操作系统:Windows 7.1 X64 编译环境:Mircosoft Visual C++ 6 2. 问题分析 (1) 分析。

汽车加油

课程设计说明书 设计题目:汽车加油问题的实现 专业:班级: 设计人: 山东科技大学 2013年12 月12 日

课程设计任务书 学院:专业:班级:姓名: 一、课程设计题目:汽车加油问题的实现 二、课程设计主要参考资料 (1)计算机算法设计与分析(第三版)王晓东著 (2) 三、课程设计应解决的主要问题 (1)汽车加油问题的实现 (2) (3) 四、课程设计相关附件(如:图纸、软件等): (1) (2) 五、任务发出日期:2013-11-21 课程设计完成日期:2013-12-12 指导教师签字:系主任签字:

指导教师对课程设计的评语 成绩: 指导教师签字: 年月日

汽车加油问题的实现 一、设计目的 课程设计是《计算机算法与设计》课程不可缺少的重要实践性环节。通过实践教学,要达到以下目的: (1)使学生掌握线性表、栈、队列、串、树、二叉树、图、集合等各种典型抽象数据类型的数学模型及其所支持基本运算的实现方法; (2)使学生掌握以抽象数据类型为模块的面向对象程序设计方法; (3)使学生提高对实际问题的分析、设计和实现能力; (4)为学生后续课程的学习及课程设计打下坚实的实践基础。 用贪心选择算法,设计解决汽车加油问题的一个简捷的算法。通过解汽车加油问题,初步学习贪心选择策略。 二、设计要求 问题描述 一辆汽车加满油后可以行驶N千米。旅途中有若干个加油站。指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。 给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。要求:算法执行的速度越快越好。 三、设计说明 (一)、需求分析 问题分析(前提行驶前车里加满油) 对于这个问题我们有以下几种情况:设加油次数为k,每个加油站间距离为a[i];i=0,1,2,3……n 1、起点到终点的距离小于N,则加油次数k=0; 2、起点到终点的距离大于N, (1) 加油站间的距离相等,即a[i]=a[j]=L=N,则加油次数最少k=n; (2) 加油站间的距离相等,即a[i]=a[j]=L>N,则不可能到达终点; (3) 加油站间的距离相等,即a[i]=a[j]=L

算法知识点总结

《算法设计与分析》知识点总结 1.算法的渐进时间复杂度分析,能够对给定的代码段(伪代码段)进行时间复杂度分析,能够对用关于问题规模n的函数表示的时间复杂度计算其渐进阶。 2.概念: 算法:通俗来讲,算法是指解决问题的方法或者过程,包括输入,输出,确定性,有限性。 1)子问题:结构性质与原问题相似的具有规模更小的问题。 2)可行解:满足某线性规划所有的约束条件(指全部前约束条件和后约束条件)的任意一组决策变量的取值,都称为该线性规划的一个可行解。 3)解空间:若齐次线性方程组有非零解,则其解有无穷多个,而齐次线性方程组所有解的集合构成一个向量空间,这个向量空间就称为解空间. 4)目标函数:指所关心的目标(某一变量)与相关的因素(某些变量)的函数关系。 5)最优解:使某线性规划的目标函数达到最优值(最大值或最小值)的任一可行解,都称为该线性规划的一个最优解。 6)最优化问题:一般是指按照给定的标准在某些约束条件下选取最优的解集,即使系统的某些性质能指标达到最大或最小。 7)递归算法:直接或者间接地调用自身的算法称为递归算法。

8)分治法:将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。递归地求出子问题的解,就可得到原问题的解。 9)动态规划:将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解,与分治法不同的,分解的子问题往往不是互相独立的。(为了避免指数时间,不管子问题的解会不会用到,都会填入到一个表中) 10)最优子结构性质:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。(动态规划和贪心都有) 11)重叠子问题性质:在用递归算法自顶向下解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只解一次,而后将其解保存在一个表格中,当再次需要此子问题时,只是简单地用常数时间查看一下结果。 12)备忘录算法:动态规划方法的变形。与动态规划算法不同的是,备忘录方法的递归方式是自顶向下的,而动态规划算法则是自底向上的。(其控制结构与递归方法是一样的,只是备忘录方法为每一个解过的子问题建立备忘录,以便需要时查看,避免相同子问题的重复求解) 13)贪心法:是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。 14)贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优解的选择,即贪心选择来达到。 15)回溯法:是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这

算法设计与实验报告讲解

算法设计与分析实验报告 学院:信息学院 专业:物联网1101 姓名:黄振亮 学号:20113379 2013年11月

目录 作业1 0-1背包问题的动态规划算法 (7) 1.1算法应用背景 (3) 1.2算法原理 (3) 1.3算法描述 (4) 1.4程序实现及程序截图 (4) 1.4.1程序源码 (4) 1.4.2程序截图 (5) 1.5学习或程序调试心得 (6) 作业2 0-1背包问题的回溯算法 (7) 2.1算法应用背景 (3) 2.2算法原理 (3) 2.3算法描述 (4) 2.4程序实现及程序截图 (4) 2.4.1程序源码 (4) 2.4.2程序截图 (5) 2.5学习或程序调试心得 (6) 作业3循环赛日程表的分治算法 (7) 3.1算法应用背景 (3) 3.2算法原理 (3) 3.3算法描述 (4) 3.4程序实现及程序截图 (4)

3.4.1程序源码 (4) 3.4.2程序截图 (5) 3.5学习或程序调试心得 (6) 作业4活动安排的贪心算法 (7) 4.1算法应用背景 (3) 4.2算法原理 (3) 4.3算法描述 (4) 4.4程序实现及程序截图 (4) 4.4.1程序源码 (4) 4.4.2程序截图 (5) 4.5学习或程序调试心得 (6)

作业1 0-1背包问题的动态规划算法 1.1算法应用背景 从计算复杂性来看,背包问题是一个NP难解问题。半个世纪以来,该问题一直是算法与复杂性研究的热点之一。另外,背包问题在信息加密、预算控制、项目选择、材料切割、货物装载、网络信息安全等应用中具有重要的价值。如果能够解决这个问题那么则具有很高的经济价值和决策价值,在上述领域可以获得最大的价值。本文从动态规划角度给出一种解决背包问题的算法。 1.2算法原理 1.2.1、问题描述: 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 形式化描述:给定c >0, wi >0, vi >0 , 1≤i≤n.要求找一n元向量(x1,x2,…,xn,), xi ∈{0,1}, ?∑ wi xi≤c,且∑ vi xi达最大.即一个特殊的整数规划问题。 1.2.2、最优性原理: 设(y1,y2,…,yn)是 (3.4.1)的一个最优解.则(y2,…,yn)是下面相应子问题的一个最优解: 证明:使用反证法。若不然,设(z2,z3,…,zn)是上述子问题的一个最优解,而(y2,y3,…,yn)不是它的最优解。显然有 ∑vizi > ∑viyi (i=2,…,n) 且 w1y1+ ∑wizi<= c 因此 v1y1+ ∑vizi (i=2,…,n) > ∑ viyi, (i=1,…,n) 说明(y1,z2, z3,…,zn)是(3.4.1)0-1背包问题的一个更优解,导出(y1,y2,…,yn)不是背包问题的最优解,矛盾。 1.2.3、递推关系:

算法分析实验报告--分治策略

《算法设计与分析》实验报告 分治策略 姓名:XXX 专业班级:XXX 学号:XXX 指导教师:XXX 完成日期:XXX

一、试验名称:分治策略 (1)写出源程序,并编译运行 (2)详细记录程序调试及运行结果 二、实验目的 (1)了解分治策略算法思想 (2)掌握快速排序、归并排序算法 (3)了解其他分治问题典型算法 三、实验内容 (1)编写一个简单的程序,实现归并排序。 (2)编写一段程序,实现快速排序。 (3)编写程序实现循环赛日程表。设有n=2k个运动员要进行网球循环赛。现 要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其它n-1个选手各赛一次(2)每个选手一天只能赛一场(3)循环赛进行n-1天 四、算法思想分析 (1)编写一个简单的程序,实现归并排序。 将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行 排序,最终将排好序的子集合合并成为所要求的排好序的集合。 (2)编写一段程序,实现快速排序。 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有 数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数 据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据 变成有序序列。 (3)编写程序实现循环日赛表。 按分治策略,将所有的选手分为两组,n个选手的比赛日程表就可以通

过为n/2个选手设计的比赛日程表来决定。递归地用对选手进行分割, 直到只剩下2个选手时,比赛日程表的制定就变得很简单。这时只要让 这2个选手进行比赛就可以了。 五、算法源代码及用户程序 (1)编写一个简单的程序,实现归并排序。 #include #include #define MAX 10 using namespace std; void merge(int array[],int p,int q,int r) { int i,k; int begin1,end1,begin2,end2; int* temp = new int[r-p+1]; begin1 = p; end1 = q; begin2 = q+1; end2 = r; k = 0; while((begin1 <= end1)&&(begin2 <= end2)) { if(array[begin1] < array[begin2]) { temp[k] = array[begin1]; begin1++; } else { temp[k] = array[begin2]; begin2++; } k++; } while(begin1 <= end1) {

贪心算法解汽车加油问题实验报告

计算机算法与分析 设计报告 班级:信管一班信管二班 姓名(学号):赵立贺(060340219) 赵艳(060340114)刘辉(060340125)王勇(060340116)万玉琪(060340213)刘旺(060340205)指导教师:赵晓峰姚天祥 设计地点:信息系统实验室 信息管理系 2008年12月13日

一、实验名称: 用贪心算法、回溯算法、动态规划等解决汽车加油次数最少问题。 二、实验目的: 课程设计是《计算机算法与设计》课程不可缺少的重要实践性环节。通过实践教学,要达到以下目的: (1)使学生掌握线性表、栈、队列、串、树、二叉树、图、集合等各种典型抽象数据类型的数学模型及其所支持基本运算的实现方法; (2)使学生掌握以抽象数据类型为模块的面向对象程序设计方法; (3)使学生提高对实际问题的分析、设计和实现能力; (4)为学生后续课程的学习及课程设计打下坚实的实践基础。 三、使用的策略: 贪心算法、回溯算法等。 四、实验内容: (一)问题描述 一辆汽车加满油后可以行驶N千米。旅途中有若干个加油站。指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。 给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。要求:算法执行的速度越快越好。 (二)问题分析(前提行驶前车里加满油) 对于这个问题我们有以下几种情况:设加油次数为k,每个加油站间距离为a[i];i=0,1,2,3……n 1.始点到终点的距离小于N,则加油次数k=0; 2.始点到终点的距离大于N, A 加油站间的距离相等,即a[i]=a[j]=L=N,则加油次数最少k=n; B 加油站间的距离相等,即a[i]=a[j]=L>N,则不可能到达终点; C 加油站间的距离相等,即a[i]=a[j]=L

银行家算法设计实验报告

银行家算法设计实验报告

银行家算法设计实验报告 一.题目分析 1.银行家算法: 我们可以把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求资源相当于客户向银行家贷款。操作系统按银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程尚需求的资源量,若是系统现存的资源可以满足它尚需求的资源量,则按当前的申请量来分配资源,否则就推迟分配。 当进程在执行中继续申请资源时,先测试该进程申请的资源量是否超过了它尚需的资源量。若超过则拒绝分配,若没有超过则再测试系统尚存的资源是否满足该进程尚需的资源量,若满足即可按当前的申请量来分配,若不满足亦推迟分配。 2.基本要求: (1)可以输入某系统的资源以及T0时刻进程对资源的占用及需求情况的表项,以及T0时刻系统的可利用资源数。 (2)对T0时刻的进行安全性检测,即检测在T0时刻该状态是否安全。

(3)进程申请资源,用银行家算法对其进行检测,分为以下三种情况: A. 所申请的资源大于其所需资源,提示分配不合理不予分配并返回 B. 所申请的资源未大于其所需资源, 但大于系统此时的可利用资源,提 示分配不合理不予分配并返回。 C. 所申请的资源未大于其所需资源, 亦未大于系统此时的可利用资源,预 分配并进行安全性检查: a. 预分配后系统是安全的,将该进 程所申请的资源予以实际分配并 打印后返回。 b. 与分配后系统进入不安全状态,提示系统不安全并返回。 (4)对输入进行检查,即若输入不符合条件,应当报错并返回重新输入。 3.目的: 根据设计题目的要求,充分地分析和理解题 目,叙述系统的要求,明确程序要求实现的功能以及限制条件。 明白自己需要用代码实现的功能,清楚编写每部分代码的目的,做到有的放矢,有条理不遗漏的用代码实现银行家算法。

汽车加油问题之贪心算法

汽车加油问题之贪心算法 (一) 问题描述 一辆汽车加满油后可以行驶N千米。旅途中有若干个加油站。指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。 给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。要求:算法执行的速度越快越好。 (二) 问题分析(前提行驶前车里加满油) 对于这个问题我们有以下几种情况:设加油次数为k,每个加油站间距离为 a[i];i=0,1,2,3……n 1、始点到终点的距离小于N,则加油次数k=0; 2、始点到终点的距离大于N, A 加油站间的距离相等,即a[i]=a[j]=L=N,则加油次数最少k=n; B 加油站间的距离相等,即a[i]=a[j]=L>N,则不可能到达终点; C 加油站间的距离相等,即a[i]=a[j]=L

南京邮电大学算法设计实验报告——动态规划法

实验报告 (2009/2010学年第一学期) 课程名称算法分析与设计A 实验名称动态规划法 实验时间2009 年11 月20 日指导单位计算机学院软件工程系 指导教师张怡婷 学生姓名丁力琪班级学号B07030907 学院(系) 计算机学院专业软件工程

实验报告 实验名称动态规划法指导教师张怡婷实验类型验证实验学时2×2实验时间2009-11-20一、实验目的和任务 目的:加深对动态规划法的算法原理及实现过程的理解,学习用动态规划法解决实际应用中的最长公共子序列问题。 任务:用动态规划法实现求两序列的最长公共子序列,其比较结果可用于基因比较、文章比较等多个领域。 要求:掌握动态规划法的思想,及动态规划法在实际中的应用;分析最长公共子序列的问题特征,选择算法策略并设计具体算法,编程实现两输入序列的比较,并输出它们的最长公共子序列。 二、实验环境(实验设备) 硬件:计算机 软件:Visual C++

三、实验原理及内容(包括操作过程、结果分析等) 1、最长公共子序列(LCS)问题是:给定两个字符序列X={x1,x2,……,x m}和Y={y1,y2,……,y n},要求找出X和Y的一个最长公共子序列。 例如:X={a,b,c,b,d,a,b},Y={b,d,c,a,b,a}。它们的最长公共子序列LSC={b,c,d,a}。 通过“穷举法”列出所有X的所有子序列,检查其是否为Y的子序列并记录最长公共子序列并记录最长公共子序列的长度这种方法,求解时间为指数级别的,因此不可取。 2、分析LCS问题特征可知,如果Z={z1,z2,……,z k}为它们的最长公共子序列,则它们一定具有以下性质: (1)若x m=y n,则z k=x m=y n,且Z k-1是X m-1和Y n-1的最长公共子序列; (2)若x m≠y n且x m≠z k,则Z是X m-1和Y的最长公共子序列; (3)若x m≠y n且z k≠y n,则Z是X和Y的最长公共子序列。 这样就将求X和Y的最长公共子序列问题,分解为求解较小规模的问题: 若x m=y m,则进一步分解为求解两个(前缀)子字符序列X m-1和Y n-1的最长公共子序列问题; 如果x m≠y n,则原问题转化为求解两个子问题,即找出X m-1和Y的最长公共子序列与找出X 和Y n-1的最长公共子序列,取两者中较长者作为X和Y的最长公共子序列。 由此可见,两个序列的最长公共子序列包含了这两个序列的前缀的最长公共子序列,具有最优子结构性质。 3、令c[i][j]保存字符序列X i={x1,x2,……,x i}和Y j={y1,y2,……,y j}的最长公共子序列的长度,由上述分析可得如下递推式: 0 i=0或j=0 c[i][j]= c[i-1][j-1]+1 i,j>0且x i=y j max{c[i][j-1],c[i-1][j]} i,j>0且x i≠y j 由此可见,最长公共子序列的求解具有重叠子问题性质,如果采用递归算法实现,会得到一个指数时间算法,因此需要采用动态规划法自底向上求解,并保存子问题的解,这样可以避免重复计算子问题,在多项式时间内完成计算。 4、为了能由最优解值进一步得到最优解(即最长公共子序列),还需要一个二维数组s[][],数组中的元素s[i][j]记录c[i][j]的值是由三个子问题c[i-1][j-1]+1,c[i][j-1]和c[i-1][j]中的哪一个计算得到,从而可以得到最优解的当前解分量(即最长公共子序列中的当前字符),最终构造出最长公共子序列自身。

武汉理工大学算法分析实验报告

学生实验报告书 实验课程名称算法设计与分析开课学院计算机科学与技术学院 指导教师姓名李晓红 学生姓名 学生专业班级软件工程zy1302班2015-- 2016学年第一学期

实验课程名称:算法设计与分析 同组者实验日期2015年10月20日第一部分:实验分析与设计 一.实验内容描述(问题域描述) 1、利用分治法,写一个快速排序的递归算法,并利用任何一种语言,在计算机上实现,同时 进行时间复杂性分析; 2、要求用递归的方法实现。 二.实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 本次的解法使用的是“三向切分的快速排序”,它是快速排序的一种优化版本。不仅利用了分治法和递归实现,而且对于存在大量重复元素的数组,它的效率比快速排序基本版高得多。 它从左到右遍历数组一次,维护一个指针lt使得a[lo..lt-1]中的元素都小于v,一个指针gt 使得a[gt+1..hi]中的元素都大于v,一个指针i使得a[lt..i-1]中的元素都等于v,a[i..gt]中的元素都还未确定,如下图所示: public class Quick3way { public static void sort(Comparable[] a, int lo, int hi) { if (lo >= hi) return; int lt = lo, i = lo + 1, gt = hi; Comparable pivot = a[lo];

第二部分:实验调试与结果分析 一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 1、调试方法描述: 对程序入口进行断点,随着程序的运行,一步一步的调试,得到运行轨迹; 2、实验数据: "R", "B", "W", "W", "R", "W", "B", "R", "R", "W", "B", "R"; 3、实验现象: 4、实验过程中发现的问题: (1)边界问题: 在设计快速排序的代码时要非常小心,因为其中包含非常关键的边界问题,例如: 什么时候跳出while循环,递归什么时候结束,是对指针的左半部分还是右半部分 排序等等; (2)程序的调试跳转: 在调试过程中要时刻记住程序是对那一部分进行排序,当完成了这部分的排序后, 会跳到哪里又去对另外的那一部分进行排序,这些都是要了然于心的,这样才能准 确的定位程序。 二、实验结果分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等) 1、实验结果:

加油站常见问题安全对策措施及建议

加油站常见问题安全对策措施及建议随着国家改革开放的不断进行及人民生活水平的不断提高,各种机动车辆迅猛增加,汽车逐渐进入家庭,随之汽车加油站得以迅速发展,已遍布城乡各地。加油站的发展虽然有利于工农业生产、交通运输和经济的发展,但是也存在一定的问题,消防安全得不到保障,因此抓好加油站的消防安全管理显得尤为重要。 一、加油站常见的问题: (一)、地下油罐通气管管口阻火装置安装错误。有的不分地下和地上罐都设置成呼吸阀,或者都设置成阻火器。《规范》明确规定,地下油罐应单独设置呼吸管,管径不应小于50毫米,且必须安装阻火器,管口与地面距离不应小于四米。沿建筑物的墙(柱)向上敷设的呼吸管,其管口应高于建筑物1米,与门窗的净距离不应小于3米。这主要是为了防止外面的火源引入油罐内造成事故。加油站的埋地油罐与地上油罐不同,埋地油罐内气体空间昼夜之间的温度无明显变化,不会产生小呼吸,而大呼吸时呼吸阀对减少油品损耗不起作用,所以只需要安装阻火器,而不需要呼吸阀,安装了呼吸阀反而增加了卸油时的阻力,处长卸油时间,但地上油罐却应该安装呼吸阀。 (二)、电气线路、电气设备的敷设不符合消防安全技术的要求。很多加油站的营业室及值班室内的照明线路不按要求敷设,不使用防爆灯具、防爆开关。有的加油站虽然在建设时采用了防爆电气,但后期管理上不严格按照要求使用,私自乱接乱拉电线导致防爆电气失去了应有的作用。 (三)、对汽车油罐车卸油场地没有设静电接地装置。检查中发现很多加油站的主管人员知道应该设置防雷、防静电装置,但对汽车

油罐车卸油场地应设静电接地装置的问题都忽视了。汽车油罐车行驶时产生大量静电,卸油场地如果没有防静电接地装置,车体上静电导除不掉,卸油时很容易导致火花使油品发生爆炸。根据规范要求,卸油场地必须设置静电接地装置,接地电阻不应大于100欧姆。 (四)、汽车油罐车采用敞开式和喷溅式卸油。加油站的汽车油罐车卸油必须采用密闭卸油方式,卸油管与油罐进油管的连接应采用快速接头。因为不密闭的卸油容易造成油品的挥发,增加损耗,且油气还会沿地面扩散若遇火源极易引起火灾。而喷溅式卸油容易使油品产生静电发生火花,引起着火。由于卸油时产生静电发生火灾的事例很多,这是卸油时由于进油管未插到罐底油品喷溅产生静电发生火花而引起的。所以,加油站的埋地油罐在设置安装时,必须按《小型石油库及汽车加油站设计规范》的要求,向下伸至罐内距罐底20厘米处。同时在卸油时要严格控制油的流速,防止流速过快而产生静电。 (五)、加油站人员违反安全规定给塑料桶(瓶)加油。用油枪往塑料桶(瓶)内加油,汽油在塑料桶内流动磨擦会产生静电,塑料桶为电绝缘物不能及时地将静电导除,因而会造成静电积聚。当静电压和桶内的油蒸气达到一定值时,将会引发爆炸。这个现象在一些乡镇的加油站非常普遍。在加油站的日常管理中,一定要督促加油站采取严格的管理,杜绝此类危险操作。 (六)、加油时不按照规定操作。有些加油站在给客车和摩托车加油时为迎合一些怕麻烦的司机,在加油时不遵守规章制度,按规定汽车进站加油只能一车一人,而有的加油站却对此不加限制,不管车内有多少人,都一律开绿灯,甚至有的大客车将一车旅客拉到加油站也不加过问。还有按照规定在给摩托车加油时,必须在加油站内划出

算法设计与分析复习题整理 (1)

一、基本题: 算法: 1、程序是算法用某种程序设计语言的具体实现。 2、算法就是一组有穷的序列(规则) ,它们规定了解决某一特定类型问题的一系 列运算。 3、算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。 4、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。 5、算法满足的性质:输入、输出、确定性、有限性。 6、衡量一个算法好坏的标准是时间复杂度低。 7、算法运行所需要的计算机资源的量,称为算法复杂性,主要包括时间复杂性和 空间复杂性。 8、任何可用计算机求解的问题所需的时间都与其规模有关。 递归与分治: 9、递归与分治算法应满足条件:最优子结构性质与子问题独立。 10、分治法的基本思想是首先将待求解问题分解成若干子问题。 11、边界条件与递归方程是递归函数的两个要素。 12、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。 13、将一个难以直接解决的大问题,分解成一些规模较小的相同问题,以便各个击 破。这属于分治法的解决方法。 14、Strassen矩阵乘法是利用分治策略实现的算法。 15、大整数乘积算法是用分治法来设计的。 16、二分搜索算法是利用分治策略实现的算法。 动态规划: 17、动态规划算法的两个基本要素是最优子结构性质和重叠子问题性质。 18、下列算法中通常以自底向上的方式求解最优解的是动态规划法。 19、备忘录方法是动态规划算法的变形。 20、最优子结构性质是贪心算法与动态规划算法的共同点。 21、解决0/1背包问题可以使用动态规划、回溯法,其中不需要排序的是动态规 划,需要排序的是回溯法。

贪心算法: 22、贪心算法总是做出在当前看来最好的选择。也就是说贪心算法并不从整体 最优考虑,它所做出的选择只是在某种意义上的局部最优解。 23、最优子结构性质是贪心算法与动态规划算法的共同点。 24、背包问题的贪心算法所需的计算时间为 O(nlogn) 。 回溯法: 25、回溯法中的解空间树结构通常有两种,分别是子集树和排列树。(3) 26、回溯法搜索解空间树时,常用的两种剪枝函数为约束函数和限界函数。 27、解决0/1背包问题可以使用动态规划、回溯法,其中不需要排序的是动态规 划,需要排序的是回溯法。 28、使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数 的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是 0/1背包,只使用约束条件进行裁剪的是 N 皇后问题。 29 用搜索算法解旅行售货员问题时的解空间树是排列树。 30 回溯法搜索状态空间树是按照深度优先遍历的顺序。 31、回溯法算法是以深度优先策略进行搜索的。 32、0-1背包问题的回溯算法所需的计算时间为 O(n2n) 分支限界法: 33、以广度优先搜索或以最小耗费(最大效益)优先的方式搜索问题解的算法称 为分支限界法。 34、分支限界法主要有队列式(FIFO)分支限界法和优先队列式分支限界法。 35、分支限界法解旅行售货员问题时,活结点表的组织形式是最小堆。 其他: 36、10000*n^2+10*n+1的时间复杂度是______。 37、f(n)=n^2+10*n+1000000的时间复杂度是______。 38、算法分析中,记号O表示渐进上界。 39、f(n)= 6×2n+n2,f(n)的渐进上界是 O(2^n)。 40、f(n)= 6×2n+n2,f(n)的渐进上界是 O(n^2)。 41、f(n)= 100×3n+10000×n2,f(n)的渐进上界是_____________。 42、f(n)= 6×4n+n2,f(n)的渐进上界是 O(2^n) 。 43、按照渐近阶从低到高的顺序排列下列表达式:4n2,logn,3n, n2/3,n!,2n。 Logn< n2/3<4n2<2n<3n

相关文档
最新文档