dp题,推出方程就好做了。
dp[i][j]=dp[i][j-1]+dp[i-j][j]
我最开始用c++敲了下,WA了,然后发现结果会超long long,于是果断换java写大数。
注意,下面的代码,我手贱把i 和 j 敲反了。。
import java.math.*;
import java.util.*;
public class Main {
/**
* @param args
*/
public static void main(String[] args)
{
BigInteger dp[][];
dp=new BigInteger[2000][200];
Scanner cin=new Scanner(System.in);
int n,k,i,j;
n=cin.nextInt();
k=cin.nextInt();
for (j=0; j<=n; j++)
{
dp[j][0]=new BigInteger("0");
}
for (i=1; i<=k; i++)
{
for (j=0; j<=n; j++)
{
dp[j][i]=new BigInteger("1");
}
}
for (i=1; i<=k; i++)
{
for (j=1; j<=n; j++)
{
if (j-i < 0)
dp[j][i]=dp[j][i-1];
else
{
dp[j][i]=dp[j][i-1].add(dp[j-i][i]);
}
}
}
System.out.println(dp[n][k]);
}
}