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

Buy the Ticket DP +大数

时间:2015-07-27 22:45:02      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

                          Buy the Ticket

题目抽象:有m个手持50元的人,n个手持100元的人,售票处没有准备钱。问有多少种不同的方案使得购票不中断。每个人是不同的个体。

分析:简单DP题。画个格子,那么选取的点不越过对角线y = x.  dp[i][j]表示i个100元的人,j个手持50元的人的方案数。     i<=j dp[i][j] = dp[i-1][j]+dp[i][j-1];  i>j  dp[i][j] = 0;  如果对某些点有限制,那么在递推是加条件判断。

ans = dp[n][m] * n! * m!;   本题用java处理大数。

 1 import java.util.*;
 2 import java.io.*;
 3 import java.math.*;
 4 
 5 public class Main
 6 {
 7     static Scanner cin = new Scanner(new BufferedInputStream(System.in));
 8     public final static int MS= 101;
 9     public  static BigInteger[][] dp = new BigInteger[MS][MS];
10     public  static BigInteger[] fact = new BigInteger[MS];
11     static
12     {
13         fact[0] = BigInteger.ONE;
14         for(int i =1;i<MS;i++)
15             fact[i] = fact[i-1].multiply(BigInteger.valueOf(i));
16         
17         for(int i =0;i<MS;i++)
18             dp[0][i] = BigInteger.ONE;
19         for(int i =1;i<MS;i++)
20         {
21             for(int j =0;j<MS;j++)
22             {
23                 if(j<i)
24                     dp[i][j] = BigInteger.ZERO;
25                 else
26                     dp[i][j] = dp[i-1][j].add(dp[i][j-1]);
27             }
28         }
29     }
30     
31     //  画出格子,选择的点不能越过y = x。
32     //  dp[i][j] = dp[i-1][j] + dp[i][j-1]   //  dp[i][j]表示i张100元,j张50元的所有情况。
33     // ans = dp[n][m] * n! *m!  ;
34     
35     public static void main(String[] args)
36     {
37         int n,m,kase = 1;
38         //System.out.println(dp[0][3].multiply(fact[0]).multiply(fact[3]));
39         while(cin.hasNext())
40         {
41             m = cin.nextInt();
42             n = cin.nextInt();
43             
44             if(n == 0 && m == 0)
45                 break;
46             System.out.println("Test #" + (kase++) +":");
47             System.out.println(dp[n][m].multiply(fact[n]).multiply(fact[m]));
48         }
49     }
50 }

 

Buy the Ticket DP +大数

标签:

原文地址:http://www.cnblogs.com/hutaishi/p/4681222.html

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