900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【放苹果】m个苹果放到n个盘子中

【放苹果】m个苹果放到n个盘子中

时间:2024-05-24 04:55:19

相关推荐

【放苹果】m个苹果放到n个盘子中

m个相同的苹果,放在n个相同的盘子中,由于相同,使用排列组合的方法不好处理。这里选用递归调用的方式解决问题:

(8个苹果,放在3个盘子里)=

(8个苹果,放在2个盘子)

+(5个苹果,放在2个盘子【每盘已经放入1个苹果】)

+(2个苹果,放在2个盘子里【每盘已经放入一个苹果】)

=(8个苹果,放在1个盘子里)+(6个苹果,放在1个盘子里【每盘已经放入1个苹果】)+(4个苹果,放在1个盘子里【每盘已经放入2个苹果】)+(2个苹果,放在1个盘子里【每盘已经放入3个苹果】)+(0个苹果,放1个盘子【每盘已经放入4个苹果】)【5】

+(5个苹果,放在1个盘子里)+(3个苹果,放在1个盘子里【每盘已经放入1个苹果】)+(1个苹果,放在1个盘子里【每盘已经放入2个苹果】)【3】

+(2个苹果,放在1个盘子里)+(0个苹果,放在1个盘子里【每盘已经放入1个苹果】)【2】

所以:最后的放置方法有=5+3+2=10中方法

特殊情况,当盘子比苹果数目多时,把m个苹果放进n个盘子里,相当于,把m个苹果放进m个盘子里。

代码:

//放苹果******************#include <iostream>using namespace std;int app(int m, int n)//m代表苹果数目,n代表盘子数目{int i=0;int sum=0;if(n==1)return 1;for(i=m;i>=0;i=i-n){sum=sum+app(i,n-1);}return sum;}int main(){int m=0,n=0;cin>>m>>n;if(m>=n){cout<<app(m,n)<<endl;}else{cout<<app(m,m)<<endl;}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。