Problem Description
ACM亚洲区比赛结束,意味着开始备战明年的浙江省大学生程序设计竞赛了!杭州电子科技大学ACM集训队也准备开始组队。
教练想把所有的n个队员组成若干支队伍,原则是每支队伍至少一人,最多三人。
现在问题来了:如果已知集训队队员的数量n,请你帮教练计算出所有可能的组队方案有多少种。
特别说明:
队伍没有编号,即如果有A,B,C三人,{A}{BC}与{BC}{A}是同一种组队情况。
Input
输入包含多组测试数据(约1000组),每组数据占一行,包含一个数字n(0<=n<=20),表示ACM集训队的队员人数;n为0,表示输入结束。
Output
请输出n个队员所有可能的组队方案数,每组输出占一行。
Sample Input
12
3
4
5
0
Sample Output
12
5
14
46
其实是数学上的一类整数划f分题
这道题,dp[n]表示第n(n>=5)个人的方案数
到第n个人他有三种选择:

这篇博客介绍了ACM竞赛中如何进行团队安排,实际上是一个数学上的整数划分问题。通过动态规划(DP)来解决,dp[n]表示第n个人的团队组合数。第n个人有三种选择:单独成队、与n-1个人中的一人组队或与两人组队。由此得出DP方程:dp[n] = dp[n - 1] + (n-1)*dp[n-2] + (n-1)(n-2)/2 *dp[n-3]。
最低0.47元/天 解锁文章
1442

被折叠的 条评论
为什么被折叠?



