2009年11月04日 星期三 21:37
问题:给定两个序列X和Y,如果序列Z既是X的子序列又是Y的子序列,则称序列Z是X和Y的公共子序列。如果存在一个X和Y的公共子序列Z,并且其他任何X和Y的公共子序列的长度都小于等于Z,则称Z是X和Y的最长公共子序列。现在的任务是,求出序列Z的长度。
分析:假设序列X和Y的长度分别为m和n,状态s[m][n]表示X和Y的最长公共子序列Z的长度,则X={x[0], x[1], x[2], ..., x[m-1]},Y={y[0], y[1], y[2], ..., y[n-1]},Z={z[0], z[1], z[2], ..., z[s[m][n]-1]}。如果x[m-1]=y[n-1],则x[m-1]=y[n-1]=z[s[m][n]-1]一定成立并且序 |
2009年10月31日 星期六 21:53
Description
People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice watch in a nearby shop. He wanted to pay the exact price(without change) and he known the price would not more than m.But he didn't know the exact price of the watch.
You are to write a program which reads n,m,A1,A2,A3...An and C1,C2,C3...Cn corresponding to the number of Tony's coi |
2009年10月24日 星期六 14:57
Description
Many people like to solve hard puzzles some of which may lead them to madness. One such puzzle could be finding a hidden prime number in a given text. Such number could be the number of different substrings of a given size that exist in the text. As you soon will discover, you really need the help of a computer and a good algorithm to solve such a puzzle.
Your task is to write a program that given the size, N, of the substring, the number of different characters |
2009年10月23日 星期五 16:55
问题:所谓子序列,就是在原序列里删掉若干个元素后剩下的序列,以字符串"abcdefg"为例子,去掉bde得到子序列"acfg"。现在的问题是,给你一个数字序列,你要求出它最长的单调递增子序列长度。
分析:经典的动态规划模型之一,设状态s[i]表示在序列a中以a[i]为末尾元素的最长递增子序列的长度,则有状态转移方程:s[i]=max{s[j]+1 | 0<=j<i且a[j]<a[i]}(0<i<n),递推边界为当i=0时s[i]=1。递推结束后,状态数组s中的最大值即为序列a的最长递增子序列的长度。不难看出,这个算法的时间 |
2009年10月22日 星期四 12:54
2009年10月22日 星期四 11:59
描述 Description
学校实行学分制。每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分。学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的。学生选修了这M门课并考核通过就能获得相应的学分。
在选修课程中,有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其它的一些课程的基础上才能选修。例如《Frontpage》必须在选修了《Windows操作基础》之后才能选修。我们称《Windows操作基础》是《Frontpage》的先修课。每门课的直接先修课最多只有一门。两门课也可能存 |
2009年10月22日 星期四 11:49
定义
考虑这样一种物品,它并没有固定的费用和价值,而是它的价值随着你分配给它的费用而变化。这就是泛化物品的概念。
更严格的定义之。在背包容量为V的背包问题中,泛化物品是一个定义域为0..V中的整数的函数h,当分配给它的费用为v时,能得到的价值就是h(v)。
这个定义有一点点抽象,另一种理解是一个泛化物品就是一个数组h[0..V],给它费用v,可得到价值h[V]。
一个费用为c价值为w的物品,如果它是01背包中的物品,那么把它看成泛化物品,它就是除了h(c)=w其它函数值都为0的一个函数。如果它是 |
2009年10月21日 星期三 22:33
问题:有N件物品和一个容量为V的背包。第i件物品的开销是v[i],权重是w[i]。这些物品被划分为M组,每个组中的物品互相冲突最多只能选择一件。求解将若干件物品放入背包并使这些物品的开销不超过背包容量所能得到的最大权重。
分析:对于每一组物品,可供选择的策略有两种,选择本组物品中的某一件或是一件都不选。这里我们定义状态s[i][j]表示只考虑前i组物品且背包容量为j时所能达到的最大权重,则有状态转移方程:s[i][j]=max{s[i-1][j], s[i-1][j-v[k]]+w[k]}(1<=k<=N且set[k]=i),递推边界为i=0时s[i][j]=0。 |
2009年10月21日 星期三 20:59
问题:二维背包问题是指每件物品都具有两种不同的开销,选择这件物品必须同时承担这两种开销,在选择物品的时候必须保证两种开销都不会超过相应的背包容量,求选择物品可以得到最大的权重。设第i件物品所需的两种开销分别为v[i]和u[i],两种开销所对应的背包容量分别为V和U,物品的价值为w[i]。
分析:相比经典的01背包问题,二维背包问题增加了一维开销,于是我们需要在状态上增加一维。设s[i][j][k]表示将前i件物品放入两种容量分别为j和k的背包时所能获得的最大权重,则状态转移方程为s[i][j][k]=max{s[i-1][j][k], s[ |
2009年10月21日 星期三 17:50
Description
麦兜最喜欢的食物是煎饼,每次在街上看到煎饼摊的时候都会在那里停留几分钟。最吸引麦兜还是煎饼师傅那一手熟练的翻煎饼的技术,一堆煎饼在那里,师傅只需要用铲子翻几下,就让煎饼整齐的叠在了一起。
这天,为了庆祝麦兜被保送上研究生,他从煎饼师傅那里买回来一些煎饼请客。但是麦兜买回的煎饼大小不一,麦兜太想吃煎饼了,他想吃这些煎饼中最大的那个。麦兜还知道同学们也很喜欢煎饼,为了表示他的诚意,他想让同学们先吃,麦兜最后吃,因此,麦兜想把煎饼按照从小到大的顺序叠放在一起,大的在最下 |
|
|
游侠UFO
男, 21岁
重庆 沙坪坝区
加为好友
|