//此问题可以看做苹果问题的简化,就是n个苹果放n个盘子,但要考虑到所有情况,还要结合此问题实际。
#include <stdio.h>
int fun(int n,int m)
{
if(n < 1|| m < 1)
return 0;
if(n == 1||m == 1)
return 1;
if(n < m)
return fun(n,n);
if(n == m)
return fun(n,m-1)+1;
if(n > m)
return fun(n,m-1) + fun(n-m,m);
}
int main(void)
{
int n,m;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
printf("%d\n",fun(m,m));
}
return 0;
}
整数划分
最新推荐文章于 2024-09-01 14:02:30 发布
本文通过递归函数解决了一个经典的组合数学问题:如何将n个苹果放入n个盘子中,使得每个盘子至少有一个苹果。该算法考虑了所有可能的情况,并通过递归的方式实现了高效求解。
374

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



