
算法设计与分析
杰尼鬼头大
这个作者很懒,什么都没留下…
展开
-
【算法设计与分析】(5)子集和问题(动态规划)
对于由从1到N (1 <= N <= 39)这N个连续的整数组成的集合来说,我们有时可以将集合分成两个部分和相同的子集合。 例如,N=3时,可以将集合{1, 2, 3} 分为{1,2}和{3}。此时称有一种方式(即与顺序无关)。 N=7时,共有四种方式可以将集合{1, 2, 3, ..., 7} 分为两个部分和相同的子集合:(建议用动态规划算法){1,6,7} 和 {2,3,4,5...原创 2019-03-24 20:13:18 · 2714 阅读 · 0 评论 -
【算法设计与分析】(4)活动调度问题(贪心算法)
题目描述:假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有的活动。第一行为活动的个数 N(1<=N<=1 000 000) 。 接下来 N 行为 Si 和 Fi (0<=Si<Fi<=2 000 000 000) ,分别代表第 i 个活动的开始时间和结束时间。活动 i 的区间段为 [Si,Fi)。 输入时间和输出时间用空格分隔。输出有...原创 2019-03-24 00:21:45 · 5146 阅读 · 4 评论 -
【算法设计与分析】(3)电缆分割问题(二分法)
题目描述:某地区即将举行区域程序设计比赛,竞赛委员会已经成立并决定举行一次最公平的竞赛, 他们决定利用星形拓扑结构来连接每个竞赛者的电脑---也即连接这些电脑到一个中心HUB上 为了达到真正的公平竞赛目的,竞赛委员会主任下令要求:每个竞赛电脑连接到中心HUB的 电缆必须是一样长的。竞赛委员会联系了一个本地的电缆老板,要求老板为他们提供一定量 的相同长度的电缆,而且要求电缆长度越长越好。通过调查...原创 2019-03-23 23:13:05 · 386 阅读 · 1 评论 -
【算法设计与分析】(2)最长公共子序列问题(动态规划)
求两个字符串的最长公共子序列的长度。输入:第一行字符串 S1第二行字符串 S2(注:字符为英文字母,大小写均可。字符串长度大于等于1 ,各不大于10000)输出:数字 M ,为最长公共子序列长度。例如:输入:BDCABAABCBDAB输出:4思路:这是一道经典的动态规划问题先初始化状态数组a的边界值,再逐位判断x[i]与y[j],如果相等,则等于...原创 2019-03-23 22:31:05 · 2058 阅读 · 1 评论 -
【算法设计与分析】(1)输水管道问题(分治法)
题目描述:某公司计划建造一条由东向西的主输水管道。该管道要穿过一个有n口水井的区域。从每口水井都要有一条输水管道沿最短路经(或南或北)与主管道相连。如果给定n口水井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各水井到主管道之间的输水管道长度总和最小的位置。注意:要求在线性时间内确定主管道的最优位置。1<=水井数量<=4 000 ...原创 2019-03-23 10:47:53 · 968 阅读 · 2 评论 -
背包九讲(转载)
背包九讲目录第一讲 01背包问题第二讲 完全背包问题第三讲 多重背包问题第四讲 混合三种背包问题第五讲 二维费用的背包问题第六讲 分组的背包问题第七讲 有依赖的背包问题第八讲 泛化物品第九讲 背包问题问法的变化附:USACO中的背包问题前言本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作...转载 2019-03-25 15:31:32 · 237 阅读 · 0 评论 -
【算法设计与分析】(8)游戏问题(树形DP)
问题描述小李很喜欢玩计算机游戏,特别是战略游戏,但是有时他不能尽快找到解所以常常感到很沮丧。现在面临如下问题:他必须在一个中世纪的城堡里设防,城堡里的道路形成一棵无向树(连通图)。要在结点上安排最少的士兵使得他们可以看到所有边。你能帮助他吗?你的任务是给出士兵的最少数目。输入格式输入包含多组数据。每组数据表示一棵树,在每组数据中:第一行是结点的数目。接下来的几行,每行按如下...原创 2019-03-25 15:04:36 · 2007 阅读 · 2 评论 -
【算法设计与分析】(7)装载问题(01背包)
已知:n个集装箱,各个集装箱的重量和价值,轮船的载重量,输出:哪些集装箱装入轮船使得装入轮船的集装箱的总价值最大. 输入: 第一行 集装箱个数n(1<=n<=1000) 接下来N行为每个集装箱重量,价值Wi,Vi(1<=Wi,Vi<=1000) 最后一行轮船载重量Max 输出: 所有可能的组合方案(物品编号,编号从1开始)例如: 输入:5...原创 2019-03-24 22:23:45 · 1538 阅读 · 0 评论 -
【算法设计与分析】(6)算24点问题(回溯法)
问题描述: 给定4个正整数,用算术运算符"+”,"-”,"*”,"/”将这4 个正整数连接起来,使最终的得数恰为24。 编程任务(建议用回溯方法): 判断给定的4个数能否组成24。数据输入: 1行 4个正整数。 结果输出: 1行,如果能得到24则输出Yes,否则输出"No answer!”。例如: 输入 1 2 3 7输出 Yes将4个整数存入数组,递归的调用一个函数,用算数符连接...原创 2019-03-24 20:38:50 · 4080 阅读 · 0 评论 -
Shifting Permutations四种全排列生成算法
给定一个11到nn的排列PP,请求出这个排列根据某种顺序的后面第kk个排列。输入格式第一行是三个由空格隔开的整数n,type,kn,type,k; 第二行是nn个由空格隔开的[1,n][1,n]中的无重复整数,表示一个排列;行末可能会有空格。typetype的含义如下:当type=1type=1时,请按字典序计算; 当type=2type=2时,请按递增进位制计算; 当type...原创 2019-09-28 14:35:14 · 152 阅读 · 0 评论