最近在学习动态规划,看到该例题,看文章的代码有些错误,自己写了一下。
一维数组解法。
例题2:国王和金矿 (双维度动态规划)
有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人数也不同。参与挖矿工人的总数是10人。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半金矿。要求用程序求解出,要想得到尽可能多的黄金,应该选择挖取哪几座金矿?
1、400金/5人 2、500金/5人 3、200金/3人 4、300金/4人 5、350金/3人
// n:金矿个数
// w:人数
// int[] g:金矿可得金钱数组
// int[] p:金矿所需人力数组
// f(n,w) = 0 (n<=1 & w<p[0])
// f(n,w) = g[0] (n==1 & w>=p[0])
// f(n,w) = f(n-1,w) (n>1 & w<p[n])
// f(n,w) = max(f(n-1,w), f(n-1,w-p[n]) + g[n]) (n>1 & w=>p[n])
```java
package leetcode.dynamicprogramming;
import java.util.Arrays;
/**
* @author lsy
* @version 1.0
* @date 2020/9/18 11:43
* @site https://zhuanlan.zhihu.com/p/31628866
* @desc 有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人数也不同。
* 参与挖矿工