后端程序员的日常:用Java写动态规划,你敢说你不懂?
public class DynamicProgramming {
public static void main(String[] args) {
int[] nums = {1, 3, 5, 7, 9};
int target = 12;
int[][] dp = new int[nums.length + 1][target + 1];
// 初始化,从0开始,就是屌丝风格
for (int i = 0; i <= nums.length; i++) {
dp[i][0] = 1;
}
// 开始动态规划
for (int i = 1; i <= nums.length; i++) {
for (int j = 1; j <= target; j++) {
if (j < nums[i - 1]) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = dp[i - 1][j] + dp[i][j - nums[i - 1]];
}
}
}
System.out.println(dp[nums.length][target]);
}
}
原文地址: https://www.cveoy.top/t/topic/mwIr 著作权归作者所有。请勿转载和采集!