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]);
}

}

后端程序员的日常:用Java写动态规划,你敢说你不懂?

原文地址: https://www.cveoy.top/t/topic/mwIr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录