POJ 3181 Dollar Dayz ( 完全背包 && 大数高精度 )

Posted rubbishes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 3181 Dollar Dayz ( 完全背包 && 大数高精度 )相关的知识,希望对你有一定的参考价值。

题意 : 给出目标金额 N ,问你用面额 1~K 拼成 N 的方案有多少种

 

分析 :

完全背包的裸题,完全背包在 DP 的过程中实际就是列举不同的装填方案数来获取最值的

故状态转移方程为 dp[i] += dp[j-w[i]]

但是这题怎么可能那么简单呢! N 和 K 的上限导致答案过大,需要使用高精度加法来完成

所以无耻的用 JAVA 来搞定了

 

技术分享图片
import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
import java.math.*;
import java.util.Arrays;
public class Main {
    static BigInteger[] dp = new BigInteger[1111];
    public static void main(String[] args){
        Scanner cin = new Scanner (new BufferedInputStream(System.in));
        int N, K;
        while(cin.hasNext()){
            N = cin.nextInt();
            K = cin.nextInt();
            for(int i=0; i<=N; i++)
                dp[i] = BigInteger.ZERO;
            dp[0] = BigInteger.ONE;
            for(int i=1; i<=K; i++)
                for(int j=i; j<=N; j++)
                    dp[j] = dp[j].add(dp[j-i]);
            
            System.out.println(dp[N]);
        }
      
    }
}
View Code

 

以上是关于POJ 3181 Dollar Dayz ( 完全背包 && 大数高精度 )的主要内容,如果未能解决你的问题,请参考以下文章

POJ 3181 Dollar Dayz ( 完全背包 && 大数高精度 )

[POJ3181] Dollar Dayz

poj 3181 Dollar Dayz

Dollar Dayz POJ - 3181

poj3181 Dollar Dayz (DP+大数)

POJ 3181 Dollar Dayz 01全然背包问题