题目链接:http://poj.org/problem?id=1633
题目思路:用dp[i][j]记录有i个障碍,难度为j的方法数,它是从长度为i-1的情况加一个更高的障碍得到,现在有两种情况,这个障碍与前面的障碍嵌套或不嵌套,嵌套则不改变原来的高度关系但难度增加1,则这种情况的个数为dp[i-1][j-1]*(i-1),如果不嵌套则有难度增加1或不增加,增加1的情况为dp[i-1][j-1]*(i-j+1),不增加的情况为dp[i-1][j]*j;
import java.math.BigInteger;
import java.util.Scanner;
public class Main
{
public static BigInteger[][] dp=new BigInteger[60][60];
public static void init()
{
int i,j;
for(i=0;i<=52;i++)
for(j=0;j<=52;j++)
dp[i][j]=BigInteger.ZERO;
dp[1][1]=BigInteger.ONE;
for(i=2;i<=52;i++)
for(j=1;j<=i;j++)
{
dp[i][j]=dp[i-1][j].multiply(BigInteger.valueOf(j)).
add(dp[i-1][j-1].multiply(BigInteger.valueOf(2*i-j)));
//System.out.println(" i "+i+" j "+j+" dp "+dp[i][j]);
}
}
public static void main(String[] args)
{
int i,j,k,m,n;
init();
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
for(i=0;i<n;i++)
{
m=sc.nextInt();
k=sc.nextInt();
if(k>m)
System.out.println(0);
else
System.out.println(dp[m][k]);
}
}
}
分享到:
相关推荐
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
北大POJ1159-Palindrome 解题报告+AC代码
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
poj分类poj分类poj分类poj分类
北大POJ2002-Squares 解题报告+AC代码
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告
POJ1503解答 POJ1503解答,正确答案(已通过POJ)
POJ1048,加强版的约瑟夫问题 难度中等
poj 1659解题报告poj 1659解题报告poj 1659解题报告poj 1659解题报告
POJ1083的代码,POJ1083的代码,POJ1083的代码
poj 百练 题目分类 poj 百练 题目分类
POJ上的一道题目,自己写的代码,因为想下载别人的, 所以就放上了。
Poj中一些题目的源代码,里面共有二十多道题目,OI
POJ2968代码有用,欢迎下载,POJ代码
poj 1001答案
北大POJ3253-POJ3253-Fence Repair【STL优先队列】 解题报告+AC代码