算法分析作业

算法分析作业
算法分析作业

算法分析作业 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

算法分析练习题(一)

一、选择题

1、二分搜索算法是利用(

A )实现的算法。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

2、下列不是动态规划算法基本步骤的是(

A )。

A、找出最优解的性质

B、构造最优解

C、算出最优解

D、定义最优解3.下列算法中通常以自底向上的方式求解最优解的是(

B )。

A、备忘录法

B、动态规划法

C、贪心法

D、回溯法

4、衡量一个算法好坏的标准是(C )。

A 运行速度快

B 占用空间少

C 时间复杂度低

D 代码短

5、以下不可以使用分治法求解的是(D )。

A 棋盘覆盖问题

B 选择问题

C 归并排序

D 0/1背包问题

6. 实现循环赛日程表利用的算法是(

A )。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

7.备忘录方法是那种算法的变形。( B )

A、分治法

B、动态规划法

C、贪心法

D、回溯法

8.最长公共子序列算法利用的算法是(

B )。

A、分支界限法

B、动态规划法

C、贪心法

D、回溯法

9.实现棋盘覆盖算法利用的算法是(

A )。

A、分治法

B、动态规划法

C、贪心法

D、回溯法

10. 矩阵连乘问题的算法可由(

B)设计实现。

A、分支界限算法

B、动态规划算法

C、贪心算法

D、回溯算法

11、Strassen矩阵乘法是利用(

A )实现的算法。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

12、使用分治法求解不需要满足的条件是(A )。

A 子问题必须是一样的

B 子问题不能够重复

C 子问题的解可以合并

D 原问题和子问题使用相同的方法解

13、下列算法中不能解决0/1背包问题的是(A )

A 贪心法

B 动态规划

C 回溯法

D 分支限界法

14.实现合并排序利用的算法是(

A )。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

15.下列是动态规划算法基本要素的是(

D )。

A、定义最优解

B、构造最优解

C、算出最优解

D、子问题重叠性质

16.下列算法中通常以自底向下的方式求解最优解的是(

B )。

A、分治法

B、动态规划法

C、贪心法

D、回溯法

17、合并排序算法是利用(

A )实现的算法。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

18.实现大整数的乘法是利用的算法(

C )。

A、贪心法

B、动态规划法

C、分治策略

D、回溯法

19. 实现最大子段和利用的算法是(

B )。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

20. 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的(

B )。

A、重叠子问题

B、最优子结构性质

C、贪心选择性质

D、定义最优解

21. 实现最长公共子序列利用的算法是(

B )。

A、分治策略

B、动态规划法

C、贪心法

D、回溯法

二、填空题

1.算法的复杂性有时间复杂性和空间复杂性之分。

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

3、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。

4.矩阵连乘问题的算法可由动态规划设计实现。

5、算法是指解决问题的一种方法或一个过程。

6、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。

7、矩阵连乘问题的算法可由动态规划设计实现。

8. 动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

9.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有限性四条性质。

10、大整数乘积算法是用分治法来设计的。

11.快速排序算法是基于分治策略的一种排序算法。

12.动态规划算法的两个基本要素是. 性质和性质。

13.任何可用计算机求解的问题所需的时间都与其规模有关。

14.快速排序算法的性能取决于划分的对称性。

15、出自于“平衡子问题”的思想,通常分治法在分割原问题,形成若干子问题时,这些子问题的规模都大致相同。

16、使用二分搜索算法在n个有序元素表中搜索一个特定元素,在最佳情况下,搜索的时间复杂性为O(),在最坏情况下,搜索的时间复杂性为O( logn )。

17、已知一个分治算法耗费的计算时间T(n),T(n)满足如下递归方程:

解得此递归方可得T(n)= O( nlogn )。

18、动态规划算法有一个变形方法备忘录方法。这种方法不同于动态规划算法“自底向上”的填充方向,而是“自顶向下”的递归方向,为每个解过的子问题建立了备忘录以备需要时查看,同样也可避免相同子问题的重复求解。

19、递归的二分查找算法在divide阶段所花的时间是 O(1) ,conquer阶段所花的时间是 T(n/2)

,算法的时间复杂度是 O(logn) 。

20、用动态规划算法计算矩阵连乘问题的最优值所花的时间是 O(n3) ,子问题空

间大小是 O(n2)

21、一个算法的优劣可以用(时间复杂度)与(空间复杂度)与来衡量。

22、直接或间接地调用自身的算法称为(递归算法)。

23、 记号在算法复杂性的表示法中表示(渐进确界或紧致界)。

24、在分治法中,使子问题规模大致相等的做法是出自一种(平衡子问题)的思想。 25、动态规划算法适用于解(具有某种最优性质)问题。

26、最优子结构性质的含义是(问题的最优解包含其子问题的最优解)。 27、按照符号O 的定义O(f)+O(g)等于O(max{f(n),g(n)})。 28、二分搜索技术是运用(分治)策略的典型例子。

29、动态规划算法中,通常不同子问题的个数随问题规模呈(多项式)级增长。 30、(最优子结构性质)和(子问题重叠性质)是采用动态规划算法的两个基本要素。

三、算法填空

1.最大子段和: 动态规划算法 int MaxSum(int n, int a[]) {

int sum=0, b=0; 速排序 template

void QuickSort (Type a[], int p, int r) {

if (p

int q=Partition(a,p,r);

QuickSort (a ,p ,q-1) ; 最长上升子序列问题】—— 提示:此题可采用动态规划算法实现

对于给定的一个序列12(,,,)N a a a ,11000N ≤≤。我们可以得到一些递增上升的

子序列12(,,

,)i i iK a a a ,这里121K i i i N ≤<<

<≤。比如,对于序列(1, 7, 3, 5, 9,

4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长

度是4,比如子序列(1, 3, 5, 8)。你的任务:就是对于给定的序列,求出最长上升子序列的长度。要求写出你设计的算法思想及递推函数的公式表达。.

2.【Gray码构造问题】——提示:此题可采用分治递归算法实现

问题描述:“格雷码”是一个长度为n2的序列,满足:

(a)每个元素都是长度为n比特的串

(b)序列中无相同元素

(c)连续的两个元素恰好只有1个比特不同

例如:n=2时,格雷码为{00,01,11,10}。

Gray码是一种编码,这种编码可以避免在读取时,因各数据位时序上的差异造成的误读。格雷码在工程上有广泛应用。但格雷码不便于运算,请你设计一种构造方法,输入长度序列n,输出格雷码(你只要做出一种构造方案即可,格雷码并不唯一)。

3.现在有8位运动员要进行网球循环赛,要设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他选手各赛一次;

(2)每个选手一天只能赛一次;

(3)循环赛一共进行n – 1天。

请利用分治法的思想,给这8位运动员设计一个合理的比赛日程。

4.对于矩阵连乘所需最少数乘次数问题,其递归关系式为:

p为其中m[i,j]为计算矩阵连乘Ai…Aj所需的最少数乘次数,p i-1为矩阵Ai的行,

i

矩阵Ai的列。现有四个矩阵,其中各矩阵维数分别为:

请根据以上的递归关系,计算出矩阵连乘积A1A2A3A4所需要的最少数乘次数。

5.有这样一类特殊0-1背包问题:可选物品重量越轻的物品价值越高。

n=6,c=20,P=(4,8,15,1,6,3),W=(5,3,2,10,4,8)。

其中n为物品个数,c为背包载重量,P表示物品的价值,W表示物品的重量。请问对于此0-1背包问题,应如何选择放进去的物品,才能使到放进背包的物品总价值最大,能获得的最大总价值多少?

6.归并排序算法对下列实例排序,写出算法执行过程。

A=(48,12,61,3,5,19,32,7)

7.规则证明: O(f(n))+O(g(n)) = O(max{f(n),g(n)})

8. 给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x,

返回其在数组中的位置,如果未找到返回-1。

写出二分搜索的算法,并分析其时间复杂度。

9. 利用分治算法写出合并排序的算法,并分析其时间复杂度

第一章总论 1、会计是以货币为主要计量单位,反映和监督一个单位经济活动的一种经济管理工作。 2、会计按报告对象不同,分为财(国家)务会计(侧重于外部、过去信息)与管理会计(侧重于内部、未来信息) 3、会计的基本职能包括核算(基础)和监督(质保)会计还有预测经济前景、参于经济决策、评价经营业绩的职能。 4、会计的对象是价值运动或资金运动(投入—运用—退出<偿债、交税、分配利润>) 5、会计核算的基本前提是会计主体(空间范围,法人可以作为会计主体,但会计主体不一定是法人)、持续经营(核算基础)、会 计分期、货币计量(必要手段) 6、会计要素是对会计对象的具体化、基本分类,分为资产、负债、所有者权益、收入、费用、利润六大会计要素。 7、会计等式是设置账户、进行复式记账和编制会计报表的理论依据。 资产=权益(金额不变:资产一增一减、权益一增一减金额变华:资产权益同增、资产权益同减) 资产=负债+所有者权益(第一等式也是基本等式,静态要素,反映财务状况,编制资产负债表依据) 收入-费用=利润(第二等式,动态要素,反映经营成果,编制利润债表(损益表)依据) 取得收入表现为资产增加或负债减少发生费用表现为资产减少或负债增加。 第二章会计核算内容与要求 1、款项和有价证券是流动性最强的资产。款项主要包括现金、银行存款、银行汇票存款、银行本票存款、信用卡存款、信用证保 证金存款、备用金等;有价证券是指国库券、股票、企业债券等。 2、收入是指日常活动中所形成的经济利益的总流入。支出是指企业所实际发生的各项开支和损失,费用是指日常活动所发生的经 济利益的总流出。成本是指企业为生产产品、提供劳务而发生的各种耗费,是按一定的产品或劳务对象所归集的费用,是对象化了的费用。收入、支出、费用、成本是判断经营成果及盈亏状况的主要依据。 3、财务成果的计算和处理一般包括:利润的计算、所得税的计算和交纳、利润分配或亏损弥补 4、会计记录的文字应当使用中文。在民族自治地区,会计记录可以同时使用当地通用的一种民族文字。在中华人民共和国境内的外商投资企业、外国企业和其他外国组织的会计记录,可以同时使用一种外国文字。 第三章会计科目与账户 1、会计科目是对会计要素的具体内容进行分类 2、会计科目的设置原则是合法性、相关性、实用性。 3、账户根据会计科目设置的,具有一定格式和结构,用于记录经济业务的。 4、会计科目(账户)按反映业务详细程度分为总账和明细账。 按会计要素不同可分为资产、负债、所有者权益、成本、损益。 5、账户的四个金额要素及关系:期末余额=期初余额+本期增加发生额-本期减少发生额。 6、账户的基本结构包括账户名称(会计科目)、记录业务的日期、凭证号数、经济业务摘要、增减金额、余额等。 7、账户分为左右两方,哪方增加,哪方减少取决于账户性质和记录的经济业务,账户余额一般在增加方。 8、会计科目和账户是对会计对象的具体内容分类,两者口径一致、性质相同;会计科目是账户的名称、开设依据;账户是会计科 目载体和具体运用。无科目,账户无依据,无自由式户,科目无作用;科目无结构,账户有一定格式和结构。实际工作中,科目和账户不加以严格区分,相互通用。 第四章复式记账 1、复式记账按照记账符号不同,分为借贷记账法、收付记账法、增减记账法。 2、借贷记账法以“借”、“贷”为记账符号,借贷哪方登记增加与减少取决于账户性质及结构。 3、资产、成本、损益(费用)增加为借,减少为贷,负债、所有都权益、损益(收入)增加为贷,减少为借。 4、资产类账户:期末余额(借方)=期初余额(借方)+本期借方发生额-本期贷方发生额 权益类账户:期末余额(贷方)=期初余额(贷方)+本期贷方发生额-本期借方发生额

算法设计与分析实验报告 学院信息科学与技术学院 专业班级软件工程3班 学号 20122668 姓名王建君 指导教师尹治本 2014年10月

实验四 矩阵相乘次序 一、问题提出 用动态规划算法解矩阵连乘问题。给定n 个矩阵{A 1,A 2,…,A n },其中A i 与A i+1是可乘的,i=1,2,…,n-1。要算出这n 个矩阵的连乘积A 1A 2…A n 。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可递归地定义为: (1)单个矩阵是完全加括号的; (2)矩阵连乘积A 是完全加括号的,则A 可表示为2个完全加括号的矩阵连乘积B 和C 的乘积并加括号,即A=(BC)。 例如,矩阵连乘积A 1A 2A 3A 4有5种不同的完全加括号的方式:(A 1(A 2(A 3A 4))),(A 1((A 2A 3)A 4)),((A 1A 2)(A 3A 4)),((A 1(A 2A 3))A 4),(((A 1A 2)A 3)A 4)。每一种完全加括号的方式对应于一个矩阵连乘积的计算次序,这决定着作乘积所需要的计算量。若A 是一个p ×q 矩阵,B 是一个q ×r 矩阵,则计算其乘积C=AB 的标准算法中,需要进行pqr 次数乘。 (3)为了说明在计算矩阵连乘积时,加括号方式对整个计算量的影响,先考察3个矩阵{A 1,A 2,A 3}连乘的情况。设这三个矩阵的维数分别为10×100,100×5,5×50。加括号的方式只有两种:((A 1A 2)A 3),(A 1(A 2A 3)),第一种方式需要的数乘次数为10×100×5+10×5×50=7500,第二种方式需要的数乘次数为100×5×50+10×100×50=75000。第二种加括号方式的计算量时第一种方式计算量的10倍。由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对计算量有很大的影响。于是,自然提出矩阵连乘积的最优计算次序问题,即对于给定的相继n 个矩阵{A 1,A 2,…,A n }(其中矩阵Ai 的维数为p i-1×p i ,i =1,2,…,n ),如何确定计算矩阵连乘积A 1A 2…A n 的计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。 二、求解思路 本实验采用动态规划算法解矩阵连乘积的最优计算次序问题。本实验的算法思路是: 1)计算最优值算法MatrixChain():建立两张表(即程序中的**m 和**s ,利用二维指针存放),一张表存储矩阵相乘的最小运算量,主对角线上的值为0,依次求2个矩阵、3个矩阵…、直到n 个矩阵相乘的最小运算量,其中每次矩阵相乘的最小运算量都在上一次矩阵相乘的最小运算量的基础上求得,最后一次求得的值即为n 个矩阵相乘的最小运算量;另一张表存储最优断开位置。 2)输出矩阵结合方式算法Traceback():矩阵结合即是给矩阵加括号,打印出矩阵结合方式,由递归过程Traceback()完成。分三种情况: (1)只有一个矩阵,则只需打印出A1; (2)有两个矩阵,则需打印出(A1A2); (3)对于矩阵数目大于2,则应该调用递归过程Traceback()两次,构造出最优加括号方式。 三、算法复杂度 该算法时间复杂度最高为)(n 3 O 。 四、实验源代码

《数据结构》必须掌握的知识点与算法 第一章绪论 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、循环链表的构造算法(其与单链表的区别是在创建时确定的)、图解

基础会计知识点汇总 第一章 一会计的产生 含义:会计是生产(经济)发展到一定阶段的产物 条件:1 生产过程较为复杂,由于管理的要求才产生了对会计的需要; 2 生产力有一定的发展,剩余产品出现,才有可能产生会计。 二会计的基本职能 (一)反映(核算)职能:处理、转换经济数据,为各类报表使用人提供信息 特点: 1、以货币为主要计量单位,从价值量角度反映。 2、反映已经发生的事实。 3、有综合性、连续性、系统性和完整性。 内容: 款项和有价证券的收付;财产收发、增减和使用;债券债务的发生和结算;资本、基金的增减和经费的收支;收入、费用、成本的计算;财务成果的计算和处理;其他需要办理会计手续、进行会计核算的事项。 (二)会计监督(控制)职能 特点: 1、伴随会计核算进行,具有完整性、连续性。 2、利用价值指标,以财务活动为主,具有综合性。 3、具有强制性和严肃性。 内容: 1、会计资料真实可靠; 2、经济业务合法性; 3、财产安全和完整; 4、财经法纪执行。 三会计的任务:反映财务情况、监督经济活动、提供会计信息。 四会计的目标:为用户提供决策和有用的财务信息 五会计定义: 以为用户提供决策有用的财务信息为目标,以核算和监督企业和各单位经济过程为内容的一种管理活动,也是管理经济,提高经济效益的重要工具。 六会计的特点 1 会计既是一种管理经济的活动,又是经济管理的工具 2 以企业、事业等单位为服务对象

3 以货币为主要的计量尺度 七会计学学科分类 财务会计:(对外报送会计)管理会计:(对内报送会计) 八会计方法-------实现会计职能的手段。 会计核算方法;会计分析方法;会计检查方法 上述三种方法以会计核算方法为基础,互相联系,形成了会计方法体系。 九会计核算方法 内容: 1、设置会计科目和账户 2、复式记账 3、填制和审核凭证 4、登记账簿 5、成本计算 6、财产清查 7、编制会计报表 会计核算与其它核算的关系 业务核算:业务活动中各种手续及其产生记录 统计核算:业务活动中数据搜集、整理与分析 会计核算:以货币计量业务活动信息 三者关系:PPT 第二章 一会计对象 就是会计核算和监督的客体,即社会再生产过程中的资金运动。 资金:社会再生产过程中各项财产物资的货币表现及货币本身。 资金循环:资金从货币形态开始,经过储备资金,生产资金,成品资金,最后回到货币资金的运动过程。 资金周转:周而复始的资金循环 该过程可以从以下3个方面进行考察:PPT 1、资金进入企业:通过筹资活动(发行股票或债券、借款)取得资金。 2、资金的循环周转:表现为供应、生产、销售过程. 3、资金退出企业:经营过程或资金循环周转完成时, 交纳所得税、分派盈利、偿还借款等形式而退出企业。 二会计要素 概念:指按照交易或事项的经济特征所作的基本分类,分为反映企业财务状况的会计要素和反映企业经营成果的会计要素。 内容:资产,负债,所有者权益,收入,费用,利润

《算法分析与设计》作业( 一) 本课程作业由两部分组成。第一部分为”客观题部分”, 由 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、快速排序算法和线性时间选择算法的随机化版本是:

专题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. 算法设计方案 (1)1λ,501λ和s λ的值。 1)首先通过幂法求出按模最大的特征值λt1,然后根据λt1进行原点平移求出另一特征值λt2,比较两值大小,数值小的为所求最小特征值λ1,数值大的为是所求最大特征值λ501。 2)使用反幂法求λs ,其中需要解线性方程组。因为A 为带状线性方程组,此处采用LU 分解法解带状方程组。 (2)与140k λλμλ-5011=+k 最接近的特征值λik 。 通过带有原点平移的反幂法求出与数k μ最接近的特征值 λik 。 (3)2cond(A)和det A 。 1)1=n λλ2cond(A),其中1λ和n λ分别是按模最大和最小特征值。 2)利用步骤(1)中分解矩阵A 得出的LU 矩阵,L 为单位下三角阵,U 为上三角阵,其中U 矩阵的主对角线元素之积即为det A 。 由于A 的元素零元素较多,为节省储存量,将A 的元素存为6×501的数组中,程序中采用get_an_element()函数来从小数组中取出A 中的元素。 2.全部源程序 #include #include void init_a();//初始化A double get_an_element(int,int);//取A 中的元素函数 double powermethod(double);//原点平移的幂法 double inversepowermethod(double);//原点平移的反幂法 int presolve(double);//三角LU 分解 int solve(double [],double []);//解方程组 int max(int,int); int min(int,int); double (*u)[502]=new double[502][502];//上三角U 数组 double (*l)[502]=new double[502][502];//单位下三角L 数组 double a[6][502];//矩阵A int main() { int i,k; double lambdat1,lambdat2,lambda1,lambda501,lambdas,mu[40],det;

2015会计基础知识重点(最新整理版) 2015会计基础知识重点,会计基础知识归纳,会计基础知识重点,有需要的同学可以参考会计基础知识重点来进行复习。 第一章总论 1、会计是以货币为主要计量单位,反映和监督一个单位经济活动的一种经济管理工作。 2、会计按报告对象不同,分为财(国家)务会计(侧重于外部、过去信息)与管理会计(侧重于内部、未来信息) 3、会计的基本职能包括核算(基础)和监督(质保),会计还有预测经济前景、参于经济决策、评价经营业绩的职能。 4、会计的对象是价值运动或资金运动(投入—运用—退出<偿债、交税、分配利润>) 5、会计核算的基本前提是会计主体(空间范围,法人可以作为会计主体,但会计主体不一定是法人)、持续经营(核算基础)、会计分期、货币计量(必要手段) 6、会计要素是对会计对象的具体化、基本分类,分为资产、负债、所有者权益、收入、费用、利润六大会计要素。 7、会计等式是设置账户、进行复式记账和编制会计报表的理论依据。资产=权益(金额不变:资产一增一减、权益一增一减益同减)资产=负债+所有者权益(第一等式也是基本等式,静态要素,反映财务状况,编制资产负债表依据)收入-费用=利润(第二等式,动态要素,反映经营成果,编制利润债表(损益表)依据)取得收入表现为资产增加或负债减少发生费用表现为资产减少或负债增加。金额变华:资产权益同增、资产权 第二章会计核算内容与要求 1、款项和有价证券是流动性最强的资产。款项主要包括现金、银行存款、银行汇票存款、银行本票存款、信用卡存款、信用证保证金存款、备用金等;有价证券是指国库券、股票、企业债券等。 2、收入是指日常活动中所形成的经济利益的总流入。支出是指企业所实际发生的各项开支和损失,费用是指日常活动所发生的经济利益的总流出。成本是指企业为生产产品、提供劳务而发生的各种耗费,是按一定的产品或劳务对象所归集的费用,是对象化了的费用。收入、支出、费用、成本是判断经营成果及盈亏状况的主要依据。 3、财务成果的计算和处理一般包括:利润的计算、所得税的计算和交纳、利润分配或亏损弥补 4、会计记录的文字应当使用中文。在民族自治地区,会计记录可以同时使用当地通用的一种民族文字。在中华人民共和国境内的外商投资企业、外国企业和其他外国组织的会计记录,可以同时使用一种外国文字。

《算法分析与设计》作业(一) 本课程作业由两部分组成。第一部分为“客观题部分”,由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、请写出批处理作业调度的回溯算法。 #include #include using namespace std; class Flowing { friend int Flow(int ** ,int ,int []); private: //int Bound(int i); void Backtrack(int t); int **M;// int *x;//当前解

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

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

《软件系统分析与设计》 期末大作业 选题名称:游戏平台管理系统设计人:徐文豪刘青海 赖超宇甘智宏 班级:软工143班 南昌大学软件学院 2016.6.1

目录 一、整体描述 (2) 二、需求分析 (3) 三、系统功能概况 (4) 四、类的属性与方法 (5) 五、系统界面界限 (11) 六、设计模型 (13) 七、设计原则 (17) 八、设计模式······················

一、整体描述 随着移动通讯的发展,手机应用也越来越多,其中,游戏应用占据了很大的比重,游戏平台管理系统是整合了大量游戏应用,以及玩家线上交流的平台。 主要受众群:拥有移动端或电脑端的人群。 应用前景:移动互联的发展为游戏平台的发展提供了很大的生存空间,应用前景十分广阔 盈利方式:向平台中游戏的开发商收取一定的费用,游戏玩家向游戏中注入资金时,收取一定比例的游戏收入。 面临的困难:游戏平台前期的推广,提高游戏平台本身对开发商和游戏玩家的吸引力,游戏平台能否适应大部分游戏玩家的要求。 玩家首先要注册账号,然后就可以在上面下载游戏应用,上传自己的游戏资源。同时,根据玩家的活跃程度获取相应积分,用积分可以兑换游戏礼包,也会根据玩家等级在游戏装备上给与相应的优惠和等级奖励。玩家在每一款游戏的评论区都可以交流游戏经验,提出意见和建议,以便游戏及时更新,弥补相应不足。玩家也可以建立游戏工会,不同游戏的玩家都可以加入,分享自己的游戏心得或者转赠游戏装备或积分。

二、需求分析 时间when:游戏厂商:随时;注册用户:随时;管理人员:正常工作时间。 地点Where:游戏厂商,管理人员:工作地点;注册用户:随地 人员who:游戏厂商,管理人员,注册用户, What:游戏厂商:推广游戏,管理人员:扩大服务,盈利;注册人员:玩游戏。 Why:游戏厂商:推广力度不大,效果不好,管理人员:方便管理,注册用户:良好的游戏环境。 性能Performance:系统提供服务的效率,响应时间快,由于是手机端的APP吞吐量不需要太大。 成本Cost:实现系统需要付出的代价,耗费****元 时间Time:2016年6月3日 可靠性Reliability: 需要系统长时间正确运行的能力 安全性Security: 由于该平台会涉及资金的流动,所以需要对信息安全的保护能力。 合规性Compliance: 需要符合各种行业的标准,法律法规,规范。技术性Technology:要求基于安卓平台开发。 兼容性Compatibility:需要与一些支付平台进行兼容能力。还有对游戏的兼容性。

2014会计基础知识重点(最新整理版) 2014-05-13 10:32:59 10570 仁和会计小编整理了最新2014会计基础知识重点,会计基础知识归纳,会计基础知识重点,有需要的同学可以参考会计基础知识重点来进行复习。 第一章总论 1、会计是以货币为主要计量单位,反映和监督一个单位经济活动的一种经济管理工作。 2、会计按报告对象不同,分为财(国家)务会计(侧重于外部、过去信息)与管理会计(侧重于内部、未来信息) 3、会计的基本职能包括核算(基础)和监督(质保),会计还有预测经济前景、参于经济决策、评价经营业绩的职能。 4、会计的对象是价值运动或资金运动(投入—运用—退出<偿债、交税、分配利润>) 5、会计核算的基本前提是会计主体(空间范围,法人可以作为会计主体,但会计主体不一定是法人)、持续经营(核算基础)、会计分期、货币计量(必要手段) 6、会计要素是对会计对象的具体化、基本分类,分为资产、负债、所有者权益、收入、费用、利润六大会计要素。 7、会计等式是设置账户、进行复式记账和编制会计报表的理论依据。资产=权益(金额不变:资产一增一减、权益一增一减益同减)资产=负债+所有者权益(第一等式也是基本等式,静态要素,反映财务状况,编制资产负债表依据)收入-费用=利润(第二等式,动态要素,反映经营成果,编制利润债表(损益表)依据) 取得收入表现为资产增加或负债减少发生费用表现为资产减少或负债增加。金额变华:资产权益同增、资产权 第二章会计核算内容与要求 1、款项和有价证券是流动性最强的资产。款项主要包括现金、银行存款、银行汇票存款、银行本票存款、信用卡存款、信用证保证金存款、备用金等;有价证券是指国库券、股票、企业债券等。 2、收入是指日常活动中所形成的经济利益的总流入。支出是指企业所实际发生的各项开支和损失,费用是指日常活动所发生的经济利益的总流出。成本是指企业为生产产品、提供劳务而发生的各种耗费,是按一定的产品或劳务对象所归集的费用,是对象化了的费用。收入、支出、费用、成本是判断经营成果及盈亏状况的主要依据。 3、财务成果的计算和处理一般包括:利润的计算、所得税的计算和交纳、利润分配或亏损弥补 4、会计记录的文字应当使用中文。在民族自治地区,会计记录可以同时使用当地通用的一种民族文字。

一需求分析 此系统是一个类似于淘宝网的在线衣服销售系统,相当于淘宝网上的一个专门买衣服的网店,它具有用户注册,用户登录,修改密码,显示系统功能,查看订购历史以及订货。 1.1需求列表: (1)用户管理:用户管理的需求包括用户注册,用户登录以及修改密码。 用户注册是添加一个我们网上衣店的新用户;用户登录是用户想要进 入系统时必须采取验证身份的步骤;修改密码是为了用户的安全性考 虑,当密码存在不安全的因素时,适时修改密码。 (2)商品衣服的管理:商品管理包括订购衣服和查看订购衣服的历史。订购衣服是当我们衣店的库存数量不足时必须采取的;查看订购衣服的 历史有助于我们更好地了解衣服的订购情况。 (3)显示系统功能:此功能是用来让用户能很清楚地了解此系统所实现的各种功能。 1.2系统用例图:

1.3用例分析及场景描述: 用户注册用例: 这部分主要是新用户进行注册的过程,首先用户进入到注册页面,填写注册信息并提交,如果无误的话系统会给予注册成功的提示,如果注册失败会提示注册失败信息。 用户登录用例: 此功能模块针对的对象是本网站的会员既已经注册的会员,会员首先填写用户名和密码,然后点击登录按钮,如果网站数据库中存在此会员并且密码正确则提示登录成功提示,如果网站不存在此用户或密码不正确,系统会提示用户登录失败。 修改密码用例: 此用例针对注册会员进行操作。用户登录成功会可以进入网站主页面,如果用户想修改密码的话可以单击修改密码按钮,进行密码修改,用户输入新密码单击修改按钮即可完成密码修改。

显示系统功能用例: 此功能针对注册会员,会员首先登录到网站,进入主页,主页会有相关操作的按钮,显示系统所提供给会员操作的功能,用户可以针对自己的需要选择系统提供的功能。 订货衣服用例: 此功能针对注册登录会员,网站提供两种订购方案:单件订购和定制套装。用户可以根据自己的需求来选择。 单件订购方案:用户选择是上衣还是裤子,并填写订购的数量,确认无误后单击订购按钮即可,如果订购成功,系统会提示订购成功,失败则会提示订购失败。 定制套装方案:用户选择定制套装的档次(高、中、低),并填写订购的数量,确认无误后单击订购按钮即可,如果订购成功,系统会提示订购成功,失败则会提示订购失败。 显示订购历史用例: 此功能针对注册会员,用户登录到系统后,主页显示系统功能中包括历史查看选项,用户可以单击进入历史交易记录页面,页面将显示用户所有的交易记录。 二设计模式 2.1单件模式 2.1.1单件模式的定义

会计基础重点归纳 第一章总论 本章主要内容 第一节会计的概念与目标 第二节会计的职能与方法第三节会计基本假设与会计基础第四节会计信息的使用者及其质量要求第五节会计准则体系 第一节会计的概念与目标本节主要内容一、会计的概念及特征 二、会计的对象与目标 一、会计的概念及特征 (一)会计的概念会计是以货币为主要计量单位,运用专门的方法,核算和监督一个单位经济活动的一种经济管理工作。 三种计量单位 { 实物计量辅助的计量单位,计量结果通常无法 劳动计量直接进行汇总、比较。 货币计量主要的统一的计量单位,能统一衡量和综合比较。但不是唯一的计量单位。 单位是国家机关、社会团体、公司、企业、事业单位和其他组织的统称。未特别说明时,本教材主要以《企业会计准则》为依据介绍企业经济业务的会计处理。 (二)会计的基本特征 1?会计是一种经济管理活动 2?会计是一个经济信息系统 3?会计以货币作为主要计量单位 4?会计具有核算和监督的基本职能 5.会计拥有一系列专门方法 会计方法是用来核算和监督会计对象,实现会计目标的手段。会计方法具体包括会计核 算方法、会计分析方法和会计检查方法等。其中,会计核算方法是最基本的方法。会计分析 方法和会计检查方法等主要是在会计核算方法的基础上,利用提供的会计资料进行分析和检 查所使用的方法。 (三)会计的发展历程 会计是随着人类社会生产的发展和经济管理的需要而产生、发展并不断得到完善。其中,会 计的发展可划分为古代会计、近代会计和现代会计三个阶段。 二、会计的对象与目标 (一)会计对象会计对象是指会计核算和监督的内容,具体是指社会再生产过程中能以货币表现的经济活动,即资金运动或价值运动。 1.资金的投入 资金的投入过程包括企业所有者(投资者)投入的资金和债权人投入的资金两部分,前者属于企业所有者权益,后者属于企业债权人权益即企业负债。 2 ?资金的运用(即资金的循环和周转) 企业将资金运用于生产经营过程,就形成了资金的运用。它又可分为供应、生产、销售 三个阶段。(1)供应过程。(2)生产过程。(3)销售过程。 3.资金的退出 资金退出过程包括偿还各项债务、上交各项税金、向所有者分配利润等,这部分资金便 离开本企业,退出本企业的资金循环与周转。 (二)会计目标

《算法分析与设计》作业参考答案 作业一 一、名词解释: 1.递归算法:直接或间接地调用自身的算法称为递归算法。 2.程序:程序是算法用某种程序设计语言的具体实现。 二、简答题: 1.算法需要满足哪些性质?简述之。 答:算法是若干指令的有穷序列,满足性质: (1)输入:有零个或多个外部量作为算法的输入。(2)输出:算法产生至少一个量作为输出。 (3)确定性:组成算法的每条指令清晰、无歧义。 (4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。 2.简要分析分治法能解决的问题具有的特征。 答:分析分治法能解决的问题主要具有如下特征: (1)该问题的规模缩小到一定的程度就可以容易地解决; (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解; (4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 3.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。 答:将递归算法转化为非递归算法的方法主要有: (1)采用一个用户定义的栈来模拟系统的递归调用工作栈。该方法通用性强,但本质上还是递归, 只不过人工做了本来由编译器做的事情,优化效果不明显。(2)用递推来实现递归函数。 (3)通过Cooper 变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。 后两种方法在时空复杂度上均有较大改善,但其适用范围有限。 三、算法编写及算法应用分析题: 1.冒泡排序算法的基本运算如下: for i ←1 to n-1 do for j ←1 to n-i do if a[j]

算法分析大作业 动态规划方法解 乘法表问题和汽车加油行驶问题目录 1.动态规划解乘法表问题 1.1问题描述------ 1.2算法设计思想------ 1.3设计方法------ 1.4源代码------ 1.5最终结果------ 2.动态规划解汽车加油行驶问题 2.1问题描述------ 2.2算法设计思想------ 2.3设计方法------ 2.4源代码------ 2.5最终结果------ 3.总结

1.动态规划解决乘法表问题 1.1问题描述 定义于字母表∑{a,b,c)上的乘法表如表所示: 依此乘法表,对任一定义于∑上的字符串,适当加括号表达式后得到一个表达式。 例如,对于字符串x=bbbba,它的一个加括号表达式为(b(bb))(ba)。依乘法表,该表达式的值为a。 试设计一个动态规划算法,对任一定义于∑上的字符串x=x1x2…xn,计算有多少种不同的加括号方式,使由x导出的加括号表达式的值为a。 1.2算法设计思想 设常量a,b,c 分别为 1, 2 ,3 。n 为字符串的长度。 设字符串的第 i 到第 j 位乘积为 a 的加括号法有result[i][j][a] 种, 字符串的第 i 到第 j 位乘积为 b 的加括号法有result[i][j][b] 种, 字符串的第 i 到第 j 位乘积为 c 的加括号法有 result[i][j][c] 种。 则原问题的解是:result[i][n][a] 。 设 k 为 i 到 j 中的某一个字符,则对于 k 从 i 到 j :result[i][j][a] += result[i][k][a] * result[k + 1][j][c] + result[i][k][b] * result[k + 1][j][c] + result[i][k][c] * result[k + 1][j][a]; result[i][j][b] += result[i][k][a] * result[k + 1][j][a] + result[i][k][a] * result[k + 1][j][b] + result[i][k][b] * result[k + 1][j][b]; result[i][j][c] += result[i][k][b] * result[k + 1][j][a] + result[i][k][c] * result[k + 1][j][b] + result[i][k][c] * result[k + 1][j][c];

相关文档
最新文档