第六章 动态规划法--实验及练习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sample Input
Sample Output
6008 6000 500 1000 1100 6000 8000 6000 2000
1300 2100 2000 4000 3000 2000 1400 1200 1900
4 4 5 9 7
首先将所有大象按体重W[i]升序排列,这样该问题就转化 为了最长上升递减子序列LIS(Longest Increasing Subsequence)问题。 定义状态d(i),代表前i个大象中以大象i作为序列结尾的最 长上升子序列的长度。 状态转移方程:d(i) = max{ d(k)+1 | 1<=k<i, W[k]<W[i], S[k]>S[i] }
6.2 实验项目——最大子段和问题
1. 实验题目 给定由 n个整数组成的序列(a1, a2, …, an),求该序列 j ak 形如 的子段和的最大值,当所有整数均为负整数时, k i 其最大子段和为0。 2. 实验目的 (1)深刻掌握动态规划法的设计思想并能熟练运用; 3. 实验要求 (1)用动态规划法设计最大子段和问题的算法; (2)比较用蛮力法、分治法和动态规划法解决此问题的时 间性能; (3)给出测试数据,写出程序文档。
【输入】 :输入包含若干大象的数据,每行一头大象,直 到输入结束。每头大象的数据包括两个整数:第一个是以 千克为单位的体重,第二个是以整百为单位的 IQ 指数。 两个整数均在 1 到 10000之间。输入最多包含 1000 头大 象。两头大象可能有相同的体重,或者相同的 IQ ,甚至 体重和 IQ 都相同。 【输出】 :输出第一行应当包括一个整数 n,为找到的大 象序列的长度。接下来的 n 行,每行包含一个正整数,表 示大象。用 W[i] 和 S[i] 表示输入数据中第 i 行的两个数 ,则若找到的这一序列为 a[1],a[2], ... ,a[n],则必须 有 : W [a[1]] < W [a[2]] < ... < W [a[n]] 和 S[a[1]] > S[a[2]] > ... > S[a[n]]i
15
输入描述: 输入的第 1 行,为两个正整数,用一个空格隔开: N m (其 中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数 。) 从第 2 行到第 m+1 行,第 j 行给出了编号为 j-1 的物品的基本数据 ,每行 有 3 个非负整数 v p q (其中 v 表示该物品的价格 ( v<10000 ), p 表示该物品的重要度( 1 ~ 5 ), q 表示该物品是 主件还是附件。如果 q=0 ,表示该物品为主件,如果 q>0 ,表示该物 品为附件, q 是所属主件的编号) 输出描述: 输出文件只有一个正整数,为不超过总钱数的物品的价格与重要度乘 积的总和的最大值( <200000 )。
6.3 实验项目——编辑距离
【 问 题 描 述 】 编 辑 距 离 Levenshtein 距 离 , 由 俄 罗 斯 科 学 家 Vladimir Levenshtein 在1965年提出。是指两个字串之间,由一个转成 另一个所需的最少编辑操作次数。给定两个字符串S和T,对于T我们允许 三种操作: (1) 在任意位置添加任意字符 (2) 删除存在的任意字符 (3) 修改任意字符 问最少操作多少次可以把字符串T变成S? 【输入】 文件 input.txt 提供输入数据,第一行为字符串A,第二行为字符串B。 【输出】 文件 output.txt 为结果输出文件,第一行为编辑距离d(A,B)
6.2 实验项目——最大子段和问题
1. 实验题目 给定由 n个整数组成的序列(a1, a2, …, an),求该序列 j ak 形如 的子段和的最大值,当所有整数均为负整数时, k i 其最大子段和为0。 2. 实验目的 (1)深刻掌握动态规划法的设计思想并能熟练运用; 3. 实验要求 (1)用动态规划法设计最大子段和问题的算法; (2)比较用蛮力法、分治法和动态规划法解决此问题的时 间性能; (3)给出测试数据,写出程序文档。
练习2:1092 回文字符串
回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。每 个字符串都可以通过向中间添加一些字符,使之变为回文字符串。例如: abbc 添加2个字符可以变为 acbbca,也可以添加3个为 abbcbba。方案1 只需要添加2个字符,是所有方案中添加字符数量最少的。 Input 输入一个字符串Str,Str的长度 <= 1000。 Output 输出最少添加多少个字符可以使之变为回文字串。 Input示例 Abbc Output示例 2
我们毕业啦 第 六 章 动态规划法 实验
其实是答辩的标题地方
算法设计与分析
6.1 实验项目——多段图的最短路径问题
1. 实验题目 编程实现图示多段图的最短路径问题的动态规划算法
2.实验目的 (1)理解动态规划算法的概念; (2)掌握动态规划算法的基本要素; (3)掌握设计动态规划算法的步骤; (4)通过应用范例学习动态规划算法的设计技巧与策略。
练习1: Is Bigger Smarter? (越大越聪明?)
PC/UVa IDs: 111101/10131, Popularity: B, Success rate: high Level: 2
【问题描述】 一些人认为,大象的体型越大,脑子越聪明。为了反驳这 一错误观点,你想要分析一组大象的数据,找出尽量多的 大象组成一个体重严格递增但 IQ 严格递减的序列。
练习3:华为机试 - 购物单(0-1背包+限制条件)
题目描述 王强今天很开心,公司发给N元的年终奖。王强决定把年 终奖用于购物,他把想买的物品分为两类:主件与附件, 附件是从属于某个主件的,Hale Waihona Puke Baidu表就是一些主件与附件的例 子:
如果要买归类为附件的物品,必须先买该附件所属的主件。 每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的 附件。 王强想买的东西很多,为了不超出预算,他把每件物品规定了一个重 要度,分为 5 等:用整数 1 ~ 5 表示,第 5 等最重要。他还从因特 网上查到了每件物品的价格(都是 10 元的整数倍)。他希望在不超 过 N 元(可以等于 N 元)的前提下,使每件物品的价格与重要度的 乘积的总和最大。 设第 j 件物品的价格为 v[j] ,重要度为 w[j] ,共选中了 k 件物品, 编号依次为 j 1 , j 2 ,……, j k ,则所求的总和为: v[j 1 ]*w[j 1 ]+v[j 2 ]*w[j 2 ]+ … +v[j k ]*w[j k ] 。(其中 * 为乘号 )请你帮助王强设计一个满足要求的购物单。
国内Online Judge 浙江工业大学 http://cpp.zjut.edu.cn/ 杭州电子科技大学 http://acm.hdu.edu.cn 哈尔滨工业大学 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a= showProblemVolume 国外Online Judge University of Valladolid http://uva.onlinejudge.org Ural State University http://acm.timus.ru 这些地方都是练习和学习算法的好地方。