动态规划
戈谣
不曾阅尽千帆,谈何归来不变
展开
-
01背包问题(空间优化,路径打印)
//写在前面//01问题:有N个物品,每个物品都有其对应的体积和价值//有一个容量为V的背包问怎样放能使背包中物品的价值最大//状态转移方程为:f[i][v]=max(f[i-1][v],f[i-1][v-a[i]+b[i]) //当使用空间优化是状态转移方程为:f[v]=max(f[v],f[v-a[i]]+b[i]) #include <iostream>#in...原创 2018-12-20 08:46:49 · 687 阅读 · 0 评论 -
完全背包问题(空间优化,打印路径)
//HDU1114//写在前面:这里给出HDU1114题作为样例//完全背包问题:有N种物品,每i种物品的体积为vc[i],价值为w[i],数量不限//有一容量为C的背包,问如何装能使背包的体积最大//当使用二维数组时的状态转移方程为:dp[i][v]=max(dp[i-1][v],dp[i][v-vc[i]]+w[i])//空间优化后的状态转移方程变为:dp[v]=max(...原创 2018-12-20 11:41:49 · 1055 阅读 · 2 评论 -
多重背包问题
HDU1059链接https://vjudge.net/problem/HDU-1059//写在前面//多重背包问题:有N种物品,第i种物品的体积为vc[i],价值为va[i],数量为c[i]//有一容量为C的背包,问怎样才能使背包中的物品价值最大//利用二进制优化将问题转化为01背包问题 //具体给出HDU上1059题作为样例 #include <iostream>...原创 2018-12-20 17:36:09 · 187 阅读 · 0 评论 -
最长上升子序列(路径打印)
//写在前面://给定一数字序列,找到其最长的上升子序列//状态转移方程为: if(arrary[j]>arrary[i])dp[j]=max(dp[j],dp[i]+1);//其中arrary[i]为数字序列中下标为i的值 #include <iostream>#include <string.h>#define maxn 1005using ...原创 2018-12-20 23:26:34 · 1115 阅读 · 0 评论 -
最长公共子序列
poj-1458作为样例。题目链接如下https://vjudge.net/problem/POJ-1458//写在前面//最长公共子序列:即给定两个字符序列要你找到两者中最长的公共子序列//状态转移方程为:{0 i=0或j=0; // dp[i][j]={dp[i-1][j-1]+1 a[i]=b[j];// ...原创 2018-12-21 09:22:11 · 190 阅读 · 0 评论 -
汽车加油行使问题DP(算法设计与分析-王晓东)
题目描述Description给定一个N*N 的方形网格,设其左上角为起点◎,坐标为(1,1),X 轴向右为正,Y轴向下为正,每个方格边长为1,如图所示。一辆汽车从起点◎出发驶向右下角终点▲,其坐标为(N,N)。在若干个网格交叉点处,设置了油库,可供汽车在行驶途中加油。汽车在行驶过程中应遵守如下规则:(1)汽车只能沿网格边行驶,装满油后能行驶K 条网格边。出发时汽车已装满油,在起...原创 2019-04-08 20:27:07 · 2477 阅读 · 0 评论 -
树的最大连通分支问题(算法设计与分析-王晓东)
问题描述:给定一棵树 T,树中每个顶点 u 都有一个权 w(u),权可以是负数。现在要找到树 T 的一个连通子图使该子图的权之和最大。对于给定的树 T,编程计算树 T 的最大连通分支。数据输入:第 1 行有 1 个正整数 n,表示树 T 有 n 个顶点。树 T 的顶点编号为 1,…,n。第 2 行有 n 个整数,表示 n 个顶点的权值。接下来的 n-1 行中,每 行有表示树 T 的一条边的...原创 2019-04-14 19:35:44 · 3955 阅读 · 6 评论