
动态规划算法
文章平均质量分 68
浑蛋
编程爱好者与纠结者
展开
-
拦截导弹问题
//最长降序子序列问题。 //arr数组储存的是导弹的高度。k数组储存的是对应arr的导弹高度为最长降序子序列最后出现的导弹 //(如k[0]就是arr[0]为降序序列最后出现的导弹)时拦截导弹的最大个数。 #include #define N 25 int main(void) { int n, i, j; int arr[N], k[N]; scanf("%原创 2017-09-05 20:30:30 · 641 阅读 · 0 评论 -
简单整数划分问题
POJ 简单整数划分问题原创 2017-09-01 19:10:49 · 4301 阅读 · 1 评论 -
活动选择问题——动态规划解法(自底向上)
java实现: public class 活动选择问题 { public static void main(String[] args) { // 活动A(0) 和 A(N+1) 为辅助作用,不是真实的活动 int s[] = {0,1,3,0,5,3,5,6,8,8,2,12,100}; int f[] = {0,4,5,6,7,9,9,10,11,12,14,16,101}原创 2017-09-10 14:26:06 · 1778 阅读 · 0 评论 -
最优二叉搜索树问题
java实现: public class 最优二叉搜索树问题 { public static void main(String[] args) { // TODO Auto-generated method stub double p[] = {0,0.15,0.10,0.05,0.10,0.20}; double q[] = {0.05,0.10,0.05,0.05,0.05原创 2017-09-09 14:18:32 · 480 阅读 · 0 评论 -
最长公共子序列问题
最长公共子序列问题原创 2017-09-09 13:12:46 · 215 阅读 · 0 评论 -
递归算法:全排列、2的幂次方表示
全排列、2的幂次方表示原创 2017-08-31 11:22:15 · 586 阅读 · 0 评论 -
矩阵链乘法
矩阵链乘法原创 2017-09-08 18:21:30 · 219 阅读 · 0 评论 -
钢铁切割问题
1.纯递归 (1)C++实现: #include using namespace std; static int num = 0; int cut(int p[], int n) { num++; int q = -1; if(n == 0) { return 0; } for(int i = 0; i<n; i++ ) { q = max(q, p[i] +原创 2017-09-08 18:07:52 · 814 阅读 · 0 评论 -
POJ开餐馆
#include #include #include using namespace std; int m[100]; int p[100]; int S[100]; int main(int argc, char const *argv[]) { int num; cin>>num; while(num --){ memset(p,0,sizeof(p)); memset(原创 2017-09-24 13:03:32 · 518 阅读 · 0 评论 -
大盗阿福
/* 【思路】:DP求出每一个状态的最优值,S[i]为盗窃前i家店铺的最优值,那么S[n]就是盗窃前n家店铺的最优值; 面临的每个抉择就是这个店铺盗还是不盗?那就从盗和不盗中选择一个最优值。 盗:S[i-2]+a[i];为前i-2家店铺的最优值+现在盗的店铺; 不盗:S[i-1];就是前S[i-1]家店铺的最优值; 最后输出S[n] */ #include #include #includ原创 2017-09-23 23:31:41 · 252 阅读 · 1 评论 -
Zipper POJ
1.动态规划(从前往后)//DP求解:定义dp[i][j]表示A中前i个字符与B中前j个字符是否能组成C中的前 (i+j) 个字符,如果能标记true,如果不能标记false; // //有了这个定义,我们就可以找出状态转移方程了,初始状态dp[0][0] = 1: //dp[i][j] = 1 如果 dp[i-1][j] == 1 && C[i+j-1] == A[i-1] //dp[i][j原创 2017-09-06 14:33:40 · 320 阅读 · 0 评论 -
输出前k大的数
输出前k大的数原创 2017-09-02 16:14:57 · 338 阅读 · 0 评论