[题目解析]小球分箱

小球分箱

时间限制: 1000 ms 空间限制: 262144 KB

题目描述

有n个相同的小球要分到3个相同箱子中,允许空箱,分法不能重复,如:n=4时,2、1、1和1、2、1这两种分法重复。问:共有多少种分法?

输入

n(n<=10000)

输出

分法总数

样例输入

4

样例输出

4

【思路】

这道题目我做了很久,但是到最后时,我发现从一开始我就看错了题目,我一开始理解为球不同盒同可为空,但是到最后发现是球同盒同可为空。这时我才意识到原来一直做的都是错的!!!!(心态崩了)

知道了基本的以后,我开始研究,我们来看解释:

Pm(N+m)这就是我们的公式啦,这个公式表示部分数为m的N-分拆的个数,m是P的下标,但是很多人就发现了,我这个解释里没有m的解释啊!嘿嘿,m为什么要加进去呢?我们需要保证盒为空啊,朋友们!!!

好,讲到这里基本的就解释完了,我们来看代码👇

(警示:诚信做题,禁止抄袭,有问题不懂请联系作者,自己抄袭题解对于我们的信息学学习毫无意义,只是在自己骗自己罢了。)

#include<bits/stdc++.h>
using namespace std;
int f(int n,int m){
 if(m==1||n==0){
  return 1;
 }
 if(m>n){
  return f(n,n);
 }
 return f(n,m-1)+f(n-m,m);
}
int main()
{
 int n,m=3;
 cin>>n;
 cout<<f(n,m);
}
posted @ 2022-03-25 20:11  zswangziye  阅读(42)  评论(0编辑  收藏  举报