1371. 货币系统 ( 完全背包问题 )

AcWing:1371. 货币系统

在这里插入图片描述


题型: 3. 完全背包问题

dp 问题

每次货币使用的次数不限, 完全背包问题(求解的时候在一定的容量下,可以获得的物品的最大价值)

这里是求方案数



AC Code

import java.util.*;
import static java.lang.System.out;

public class Main{
    
    
    
    public static void main(String[] args) {
    
    
        Scanner in = new Scanner(System.in);
        int v = in.nextInt();
        int n = in.nextInt();
        int[] w = new int[v];
        for(int i = 0; i < v; i++) w[i] = in.nextInt();
        
        // 方案数很大 
        long [] dp = new long[n + 1];
        dp[0] = 1;
        
        //个数
        for(int i = 0; i < v; i++) {
    
    
            // 面值
            for(int j = w[i]; j <= n; j++) {
    
    
                dp[j] += dp[j - w[i]];
                // 完全背包问题: dp[j] = Math.max(dp[j], dp[j - w[i]] + w[i]);
            }
        }
        
        out.println(dp[n]);
    }
    
}



猜你喜欢

转载自blog.csdn.net/qq_43765535/article/details/113038947