动态规划练习专项
君诺
这个作者很懒,什么都没留下…
展开
-
动态规划练习一之最低通行费
这个题题意是找一条穿过矩阵的路线使得所穿过路线的数字之和最小(只能往右或者下走) 思路:这个题可以参考三角阵的解法,逆推最小通行费的 状态转移方程为: f[i][j]=min(f[i-1][j]+f[i][j-])+a[i][j] 代码: #include #include using namespace std; int a[101][101],b[101][101]; int main原创 2017-04-17 22:13:33 · 472 阅读 · 0 评论 -
动态规划练习一之大盗阿福
其题意是,一个小偷要投钱,若连续偷两家的钱就会被发现,所以要求不被发现的情况下能得到的最多的钱数。 思路:由于要求钱数最多,且不被发现,就是考虑第i个银行抢不抢的问题,得到状态转移方程为: b[i]=max(b[i-1],a[i]+b[i-2]) 代码: #include #include using namespace std; long long int a[100001],b[100原创 2017-04-17 22:08:16 · 314 阅读 · 0 评论 -
动态规划练习一之采药
这个题的大意就是有数个已知价值和采药时间的草药,要求在限定时间内采到最大价值的草药 思路:由于草药不能分割,所以是典型的01背包问题,采用滚动数组更新,判断第i个草药选与不选的状态,得到状态转移方程: f[i][j[=max(f[i-1][j],f[i-1][j-b[i]+a[i])进而求解 代码: #include #include #include using namespace原创 2017-04-17 22:03:34 · 248 阅读 · 0 评论