动态规划
浅笑~.~
都会好起来的
展开
-
最长递减子序列
/*最长递减子序列如果Array[i]>aArray[j] 第i个数的最长递减子序列的长度 等于 i+1到最后一个数的最长递减子序列的长度 加 1否则 最长递减子序列的长度就是1;最后一个数的最长递减子序列的长度等于1,最开始的时候dp[i]的值都为1;然后倒着求最长递减子序列如 3,8,7,5,4,6,3,9dp[0]=1,dp[1]原创 2016-10-21 22:25:27 · 930 阅读 · 0 评论 -
台阶走法
/* 问题:一个楼梯有35级,每次走1级或2级或3级,请问从底走到顶一共有多少种走法? 思想:到达最后一阶可以由最后一阶的前三阶走三步上去,或者由最后一阶的前两阶走两步上去,也可以由最后一阶走一步上去 第一阶有一种走法(一步) 第二阶有两种走法(连着走两个一步和直接一步走两个台阶) 第三种走法(由前两个台阶的走法再走一步和直接一步走三个台阶) 第i阶走法=第i-原创 2016-10-22 14:22:13 · 985 阅读 · 0 评论 -
0-1背包
/*0-1背包问题如果背包容量j大于第i个物品的体积那么前i个物品在容量为j的最大价值为第i个物品的价值加上前面i-1个物品在容量为j-第i个位置上的体积或者前面i-1个物品的最大值dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i].weight]+a[i].value)如果背包容量j小于第i个物品的体积那么前i个物品在容量为j的最大价值为原创 2016-10-17 21:59:09 · 191 阅读 · 0 评论 -
最大字段和问题
/*最大字段和问题以第i位数字结尾的最大字段和等于前一个字段和加上本身的值或者等于本身;动态转移方程为:dp[i]=max(dp[i-1]+a[i],a[i]);如 8,34,-67,98,3,5,-7,43dp[0]=8;因为dp[0]大于0,所以dp[1]=dp[0]+a[1];因为dp[1]大于0,所以dp[2]=dp[1]+a[2];因为dp[2]小于0,所原创 2016-10-17 20:55:46 · 884 阅读 · 0 评论 -
最长公共子序列
/*最长公共子序列3,8,7,6,5,24,8,3,6,5,1c[i][j] 表示第一个数组的第i个位置和第二个数组的第j个位置的第j个位置的最长公共子序列的长度如果第一个数组第i个位置的值和第二个数组第j个位置的值相同那么最长公共子序列的值等于第一个数组第i-1个位置的值和第二个数组第j-1个位置最长公共子序列的值加一(c[i][j]=c[i-1][j-1]+1)原创 2016-10-22 15:07:30 · 201 阅读 · 0 评论 -
N背包问题
/*n背包i个物品在体积为j的背包中最大的价值为max(第i个物品装0个,装1个……装j/i.weight)w 3 2 5v 8 5 12 背包容量为5 0 1 2 3 4 53 0 0 0 8 8 82 0 0 5 8 10 135 0 0 0 8 10 13*/原创 2016-10-22 16:45:35 · 771 阅读 · 0 评论