hdu1502 大数dp

来源:互联网 发布:linux脚本读取文件 编辑:程序博客网 时间:2024/06/05 09:21

这道题需要用到大数运算,很机智的想到了java

题意为有n个a,b,c组成的数,其中a的个数不小于b的个数,b的个数不小于c的个数,求排列

递推公式 dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k]+dp[i][j][k-1];

import java.math.*;import java.util.Scanner;public class Main {public static void main(String args[]){BigDecimal [][][]dp=new BigDecimal[65][65][65];dp[0][0][0]=BigDecimal.ONE;for(int i=1;i<=60;i++){for(int j=0;j<=i;j++){for(int k=0;k<=j;k++){dp[i][j][k]=BigDecimal.valueOf(0);if(i>j) dp[i][j][k]=dp[i][j][k].add(dp[i-1][j][k]);                    if(j>k) dp[i][j][k]=dp[i][j][k].add(dp[i][j-1][k]);                    if(k>0) dp[i][j][k]=dp[i][j][k].add(dp[i][j][k-1]);}}}Scanner sc=new Scanner(System.in);while(sc.hasNext()){int x= sc.nextInt();System.out.println(dp[x][x][x]);System.out.println();}}}


0 0
原创粉丝点击