07 2013 档案
摘要:最近好多事啊,都没时间做点最近想做的事。同时处理多件事也是一种能力吧,加油! 从今天开始转入贪心算法的学习哦。动态规划将会不定期更新。加油(⊙o⊙)哦
阅读全文
摘要:描述整数划分是一个经典的问题。请写一个程序,完成以下要求。输入每组输入是两个整数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]参考划分问
阅读全文
摘要:描述给定一个由整数组成二维矩阵(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[]
阅读全文
摘要:描述有一楼梯共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 ...
阅读全文
摘要:描述小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N 元(可以等于N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j 件物品的价格为v[j],重要度为w[j],共选中了k 件物品,编号依次为j1...jk,则所求的总
阅读全文
摘要:问题描述 给定n种物品和一个背包。物品i的重量是w(i),其价值为v(i),背包的容量为c(即最多能够装c重量的物品)。这n种物品可以重复放置(这是与普通背包问题的不同之处)。普通背包问题输入n=5,c=6.物品容量和价值分别为: 2 6 2 3 ...
阅读全文
摘要:问题描述: 给定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]} 具体解释在这里就不阐述了,可以参...
阅读全文
摘要:描述给定一整型数列{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...
阅读全文
摘要:描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。输入第一行给出整数N(0 j) 6 ...
阅读全文
摘要:描述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
阅读全文
摘要:描述有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...
阅读全文
摘要:描述求一个字符串的最长递增子序列的长度如: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...
阅读全文
摘要:描述: 求解两个字符串的最长子序列。输出其长度和子字符串输入: 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 ...
阅读全文
摘要:描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的输入第一行输入一个正整数N,表示测试数据组数(N29 /// 求解需要的最少括号数30 /// 31 /// 从I开始32 /// 到j结束33 /// 匹配数组34 /// 保存i---j需要次数的数组35 /// 36 public static int NeedLeng...
阅读全文
摘要:描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 5...
阅读全文

浙公网安备 33010602011771号