- 博客(8)
- 资源 (4)
- 收藏
- 关注
原创 背包解决购物清单
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (scan.hasNext()) { int n = scan.nextInt();// 总钱数 in...
2018-09-06 17:25:52 188
原创 背包解决数字组合
import java.util.Scanner;/** * @author Oxygen * @date 2018年8月30日 */public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.n...
2018-09-06 17:11:56 415
原创 项目利润(贪心)
分析:将所有的项目按照花费由小到大放入小根堆,如果当前钱数能做的项目,按照利润由大到小的放入大根堆,每做一个项目都重复的往大根堆里丢能做的项目,直到大根堆为空,或者k个项目做完为止import java.util.Comparator;import java.util.PriorityQueue;import java.util.Scanner;/** * @author Ox...
2018-09-02 13:32:59 255
原创 石子合并问题2——区间DP
分析:区间动规一般都是三层for循环,需要注意的是区间用从小到大, 因为动态规划就是后面的用到前面的出的结果递推后面的结果。 dp[i][j] 表示从第 i 堆合并到第 j 堆的最小代价,sum[i][j] 表示第 i 堆到第 j 堆的石子总和。动态转移方程:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + sum[i][j]) (i...
2018-09-01 22:33:28 347
原创 石子合并问题1——贪心霍夫曼编码
N堆石子排成一列,两两合并成一堆,只能相邻的合并。合并代价为两堆石子个数之和。总的代价为所有中间结果之和。思路是: 本问题实际上就是哈夫曼编码,每次选择最小的两堆合并,合并的代价总和就是最终的最小代价,可以借助小根堆实现 霍夫曼编码详解:https://blog.csdn.net/xgf415/article/details/52628073import java.util.Comp...
2018-09-01 21:32:01 1949 1
原创 背包解决钢条切割问题
import java.util.Scanner;/** * @author Oxygen * @date 2018年9月1日 */public class cutRod { public static void main(String[] args) { int[][] data = new int[][] { { 1, 2 }, { 2, 5 }, { 3, 8 }, ...
2018-09-01 18:14:29 279
原创 01背包从入门到精通
经典背包问题-描述:N件物品和容量为V的背包,每件物品有不同的价值和重量,求放入背包物品的最大价值package Backpack_problem;/** * @author Oxygen * @date 2018年8月31日 */public class _01backpack { public static void main(String[] args) { int[...
2018-09-01 13:19:42 149
原创 歌曲组合
import java.util.Scanner;/** * @author Oxygen * @date 2018年8月31日 */public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int K = scanne...
2018-09-01 09:27:23 157
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人