码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-12-29 15:25:25      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:log   大数高精度   util   asn   int   puts   lan   cin   style   

题意 : 给出目标金额 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 ( 完全背包 && 大数高精度 )

标签:log   大数高精度   util   asn   int   puts   lan   cin   style   

原文地址:https://www.cnblogs.com/Rubbishes/p/8143893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!