随笔分类 -  动态规划

摘要:编辑距离指通过修改,删除,添加。使得两个字符串能够相同所需要操作的次数。 edit(i,j) if S1[i]==S2[j] temp=0; else temp=1; edit(i,j)=min(A[i-... 阅读全文
posted @ 2014-09-21 22:52 白来了123 阅读(1124) 评论(0) 推荐(0) 编辑
摘要:第一个问题,查找出1000万数据中最大的100万条。 对这个问题的第一反应就是利用排序算法,排序有很多种。其中以快排用的最多。只需多次paration得到前100万即可。 还有一种思路就是建立一个100万大小的堆,然后再不断的对进来的数据进行堆调整。当查找出的数据越小的时候,优势会特别明显。比如10 阅读全文
posted @ 2014-09-18 19:59 白来了123 阅读(524) 评论(0) 推荐(1) 编辑
摘要:描述整数划分是一个经典的问题。请写一个程序,完成以下要求。输入每组输入是两个整数n和k。(1 i) = dp[i-j][j] + dp[i][j-1] (ii && j%2 == 1)= dp[i][i-1] if( j>i && j%2 == 0)(最大数不可能为偶数)= dp[i-j][j] + dp[i][j-2]没用到j时划分不变,即dp[i][j-2],用到则是dp[i-j][j];第五行:将n划分成若干完全不同正整数之和的划分数。其实这个就是一个背包,状态转移方程为:dp[i][j] = dp[i][j-1]+dp[i-j][j-1]参考划分问 阅读全文
posted @ 2013-07-09 20:20 白来了123 阅读(386) 评论(0) 推荐(1) 编辑
摘要:描述给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。例子:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2其最大子矩阵为:9 2-4 1-1 8其元素总和为15。输入第一行输入一个整数n(0 4 int maxSubSum(int m,int n); 5 int maxSum(int k,int b[]); 6 using namespace std; 7 int M[100+1][100+1],b[100+1]; 8 int _tmain(int argc, _TCHAR* argv[] 阅读全文
posted @ 2013-07-09 18:51 白来了123 阅读(655) 评论(0) 推荐(0) 编辑
摘要:描述某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。输入第一行输入测试数据组数N(1 3 using namespace std; 4 int test[20+1]; 5 #define max(a,b)(a>b?a:b) 6 int _tmain(int argc, _TCHAR* argv[]) 7 { 8 int testNum,missileNum,p[21]. 阅读全文
posted @ 2013-07-09 15:59 白来了123 阅读(196) 评论(0) 推荐(0) 编辑
摘要:描述有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?注:规定从一级到一级有0种走法。输入输入数据首先包含一个整数n(1 2 using namespace std; 3 int m[40]; 4 int _tmain(int argc, _TCHAR* argv[]) 5 { 6 int n,louti; 7 cin>>n; 8 m[1]=0; 9 m[2]=1;10 m[3]=2;11 while(n--)12 {13 cin>>louti;14 for(int ... 阅读全文
posted @ 2013-07-09 12:18 白来了123 阅读(602) 评论(0) 推荐(0) 编辑
摘要:描述小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N 元(可以等于N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j 件物品的价格为v[j],重要度为w[j],共选中了k 件物品,编号依次为j1...jk,则所求的总 阅读全文
posted @ 2013-07-09 11:42 白来了123 阅读(290) 评论(0) 推荐(0) 编辑
摘要:问题描述 给定n种物品和一个背包。物品i的重量是w(i),其价值为v(i),背包的容量为c(即最多能够装c重量的物品)。这n种物品可以重复放置(这是与普通背包问题的不同之处)。普通背包问题输入n=5,c=6.物品容量和价值分别为: 2 6 2 3 ... 阅读全文
posted @ 2013-07-08 22:12 白来了123 阅读(1279) 评论(0) 推荐(0) 编辑
摘要:问题描述: 给定n种物品和一个背包。物品i的重量是w(i),其价值为v(i),背包的容量为c(即最多能够装c重量的物品)。给定样例: 输入n=5,c=6.物品容量和价值分别为: 2 6 2 3 6 5 5 4 4 6最后输出时:12解法: 一般动态规划的解法都会有公式:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}. 该公式也可以转换为f[v]=max{f[v],f[v-c[i]]+w[i]} 具体解释在这里就不阐述了,可以参... 阅读全文
posted @ 2013-07-08 21:31 白来了123 阅读(651) 评论(0) 推荐(0) 编辑
摘要:描述给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1 2 /// 求解数组M的子串最大 3 /// 4 /// 数组 5 /// 数组长度 6 /// 返回最大值 7 public static int BiggestSubsequenceSum(int[] M, int Len) 8 { 9 int sum = intMin,count=0;10 for (i... 阅读全文
posted @ 2013-07-08 11:41 白来了123 阅读(308) 评论(0) 推荐(0) 编辑
摘要:描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出整数N(0 j) 6 ... 阅读全文
posted @ 2013-07-07 22:42 白来了123 阅读(609) 评论(0) 推荐(0) 编辑
摘要:描述73 88 1 02 7 4 44 5 2 6 5(Figure 1)Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right.输入Your progra 阅读全文
posted @ 2013-07-07 16:50 白来了123 阅读(249) 评论(0) 推荐(0) 编辑
摘要:描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a P) 9 {10 int[,] M = new int[P.Count, P.Count];11 int[] dp = new int[P.Count];12 int biggest = 0;13 for (int k = 0; k = 0; j--)21 {22 if (IsMatch(x[j], P... 阅读全文
posted @ 2013-07-07 11:48 白来了123 阅读(335) 评论(0) 推荐(1) 编辑
摘要:描述求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0 P[i + 1]) 9 {10 char point1 = P[i];11 P[i] = P[i + 1];12 P[i + 1] = point1;13 }14 }15 }16 ch... 阅读全文
posted @ 2013-07-06 21:54 白来了123 阅读(452) 评论(0) 推荐(0) 编辑
摘要:描述: 求解两个字符串的最长子序列。输出其长度和子字符串输入: S1:abchifkdacb S2:bcacbhiab输出: bchiab解题思路: 可以利用求解出两个子字符串的最长长度,再求出其完成字符串的最长长度。 S1[0...i]与S2[0...j]的长度等于:{S1[0..i-1]与S2[0..j-1]加1}(此时S1[i]==S2[j]) {S1[0..i-1]与S2[0..j]和S1[0..i]与S2[0..j-1]中长度较大的那个}求解子序列: 1 /// 2 /// 3 ... 阅读全文
posted @ 2013-07-06 21:40 白来了123 阅读(685) 评论(0) 推荐(0) 编辑
摘要:描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的输入第一行输入一个正整数N,表示测试数据组数(N29 /// 求解需要的最少括号数30 /// 31 /// 从I开始32 /// 到j结束33 /// 匹配数组34 /// 保存i---j需要次数的数组35 /// 36 public static int NeedLeng... 阅读全文
posted @ 2013-07-06 17:29 白来了123 阅读(728) 评论(0) 推荐(0) 编辑
摘要:描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 5... 阅读全文
posted @ 2013-07-06 10:53 白来了123 阅读(1205) 评论(2) 推荐(2) 编辑