- 博客(3)
- 收藏
- 关注
原创 最短路问题
最短路问题 题目描述 n个点m条边的有向图,每条边都有边权,边权为经过这条边需要花费的时间,只能从编号小的点走到编号大的点,求从1号点走到n号点所花费最少的时间 思路 这是一道经典动态规划题目,可以分析出只需要考虑到达每个点最短的时间。 然后可以得出一个递推关系式:到达第n个点的最短距离为在所有能够到达第n个点的上一个点的最短距离加上上一个点到第n个点的距离最小,那么就走这一条路。 AC代码 #include <bits/stdc++.h> const int MX = 1005; int x
2022-03-01 22:17:01 375
原创 完全背包问题
完全背包问题 在01背包问题中,每件物品只能够选取一次,接下来问题进一步复杂化,每件物品都是无限件,可以选取无数次 由01背包问题我们可以直接想到新的递推关系 设dp[i][j]为前i件物品在体积为j下的最大价值,那么 dp[i+1][j] = max(dp[i][j - k * w[i]] + k * v[i] k >= 0) 根据这个递推关系,我们可以很快的写出代码如下: #include <bits/stdc++.h> using namespace std; const in
2022-01-21 21:41:13 285
原创 01背包问题
01背包问题一 经典动态规划 有N件物品,背包有V的存储空间,每件物品有自己的价值,求背包可装下的最大价值 分析: 可以建立dp二维数组,dp[i][j] 就是指前i件物品在存储空间为j时的最大价值 可以得到一个递推关系 在第i+1件物品所需要的存储空间大于j时,背包无法装下这件物品,所以 dp[i+1][j] = dp[i][j] 在第i+1件物品所需要的存储空间小于j时,背包可以装下这件物品,但是我们要求的是最大值,所以 dp[i+1][j] = max(dp[i][j] , dp[i][j-w[i]]
2022-01-16 00:44:19 277
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人