放苹果
/*放苹果分为两种情况,一种是有盘子为空,一种是每个盘子上都有苹果。令(m,n)表示将m个苹果放入n个盘子中的摆放方法总数。1.假设有一个盘子为空,则(m,n)问题转化为将m个苹果放在n-1个盘子上,即求得(m,n-1)即可2.假设所有盘子都装有苹果,则每个盘子上至少有一个苹果,即最多剩下m-n个苹果,问题转化为将m-n个苹果放到n个盘子上即求(m-n,n)*/#includeusing namespace std;int getNum(int m, int n){ if(m < 0) return 0; if(m == 0 || m == 1) return 1; if(n == 1) return 1; return getNum(m - n, n) + getNum(m, n - 1);}int main(){ int m, n; while(cin >> m >> n){ int ans = getNum(m, n); cout << ans << endl; } return 0;}
#include#includeusing namespace std;int main(){ int m, n; while(cin >> m >> n){ vector>record(m+1,vector(n+1,0)); for(int i=0;i<=n;i++) { record[0][i]=1; record[1][i]=1; } for(int i=0;i<=m;i++) { record[i][1]=1; } for(int j=2;j<=n;j++) { for(int i=2;i<=m;i++) record[i][j]=(i-j<0?0:record[i-j][j])+record[i][j-1]; } cout << record[m][n] << endl; } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~