-
描述
ACM队队花C小+最近在X大OJ上做题,竟发现了一道做不出来的…水题!她快郁闷死了……也许是最近状态不太好吧……她希望大家能帮帮忙:把一个整数分成若干个不为零的整数,问有多少种不同分法。
例:7 3 其中的分法:1 1 5,1 5 1,5 1 1是同一种分法。
-
输入
-
有多组测试数据
每组数据都有两个整数n,m(6<=n<=500,2<=m<=6)
n表示该整数,m表示把n分成m份
输出
-
对每一组测试数据,输出不同的分法数
样例输入
-
7 3 10 2 20 3
样例输出
-
4 5 33
DP的效率更高一些。因为dp数组中已经存放了之前算出来的把n分成m个有几种分法的数值,再次测试的时候不用重新算了。
相当于把n个苹果放到m个盘子里有几种分法。dp[n][m] = dp[n-1][m-1]+dp[n-m][m]。什么意思呢?就是把n个苹果放到m个盘子里并且保持每个盘子都不为空,所以相当于两种放法的相加:1.只有一个盘子里有一个苹果,这时候就是把n-1个苹果放到m-1个盘子里。2.每个盘子里的苹果数都大于一个,这时候相当于每个盘子里都事先装好了一个,只分剩下的n-m个就可以了。
#include
#include
int dp[505][7];
int main()
{
}