把M个苹果放到N个盒子有多少种放法。。盒子可空,算组合,3 3 7 和7 3 3和3 7 3都是一种。
不好意思,新人没分。。
不好意思,新人没分。。
解决方案 »
- 好郁闷啊!今天看什么枚举看了有些地方不明白啊
- 急!如何实时保存Jslider数值?
- applet与数据库的交互,设置java.policy的问题
- 如何将加密的class文件反编译成.java文件,急。。。。
- 关于使用jcreator的一个问题
- 多线程为什么不对??
- 在applet中,如何获取网页中设置的width及height的数值?
- 如何用Java 的socket 来实现服务器和客户端的图象交互传输,急盼!!!
- 初学者问个问题!多谢帮忙!
- 由于本人函授本科,期末JAVA两题编程不会写,楼主只会C。望高手们帮忙一下,明早一大早就要考试了,坐等
- 关于多线程的问题
- 关于Java3D打jar包的问题
n 种方法。
拿一个苹果出来随机放个盒子,有N种方法;
再拿一个苹果出来随机放个盒子,有N种方法;
..........
N*N*N*.....
不知道以后不上学了
这些题会不会也不会做了用*代表苹果吧
比如说5个苹果放3个盒子里
*****
在其中我加2个板就能把苹果分成三份
*****||
让这7个东西随便排列7!
其中苹果位置互换无所谓,板位置互换无所谓
所以为7!/5!/2!
你的题同理就是(M+N-1)!/M!/(N-1)!也可以想简单一点
一共有M+N-1个东西
从中挑出N-1个板子
递归法求解排列组合的一个题目(pku 苹果盒子题目)2007-03-04 19:37/*******pku放置苹果问题的小程序******/
/*******作者:xiaocui **************/
/*******时间: 2007.3.4**************/
/*******版本: v1.0 *****************//****问题描述:
****
放苹果
Time Limit:1000MS Memory Limit:10000K
Total Submit:4861 Accepted:3034 Description
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 Input
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。 Output
对输入的每组数据M和N,用一行输出相应的K。 Sample Input
1
7 3
Sample Output
8
解决思路,可以利用递归的方法,也可以利用组合数学里面的栅格法进行解决。本程序利用
递归方法来解决此问题。把m个苹果放到n个盒子里,结果不相交的分为2种情况:(1)没有盒子
空;(2)有盒子空。 盒子的空是一步一步确定的,空盒的个数也只能到最后完毕才能确定。 所以, 设递归函数为f,则有递归表达式: f(m,n) = f(m-n, n) +f(m,n-1);
f(m-n,n)表示首先给n个盒子各方一个苹果,然后再把剩余的m-n和苹果房间n个盒子里;
f(m,n-1)表示一个盒子为空,把m个苹果放到n-1个盒子里去。 如果,苹果数等于0了,或者盒子数等于1了,这2种情况的方法都是1种,这就是递归的出口(结束条件). f(m,n)=f(m,m)(m<n时,m个苹果最多需要m个盒子,一个盒子放1个,多余的盒子根本用不上)。
**********************************************************************************/#include <iostream>
using namespace std;/*****放置苹果的递归函数*****
*****递推式为:
f(m,n) = f(m-n,n) + f(m,n-1); m>n
f(m,n) = f(m,m); m<n
f(0,n) = 1; m=0
f(m,1) = 1; n=1
********/
int f( int m, int n )
{
//递归出口,没有苹果或者盒子剩下1个
if ( m==0 || n == 1 )
{
return 1;
} //苹果树多于盒子数
if ( m >= n )
{
return f(m-n, n)+f(m, n-1);
}
else //苹果树少于盒子数,只需要相同的盒子数就足够了
{
return f(m, m);
}
}int main()
{
cout <<"请输入苹果数目: ";
int apple_count;
cin >> apple_count;
cout <<"请输入盒子数目: ";
int box_count;
cin >> box_count; cout <<"把这些苹果房间这些盒子,不重复的放置方法有: "<<f(apple_count, box_count)<<endl; return 0;
m
n 种方法。
拿一个苹果出来放到N个盒子,有N种方法;
再拿一个苹果出来放到N个盒子,有N*N种方法;
..........
N*N*N*.....
晕死,这种题目还用讨论吗?