一道题目,求教

ccc_moriya 2008-12-17 04:51:00
把M个苹果放到N个盒子有多少种放法。。盒子可空,算组合,3 3 7 和7 3 3和3 7 3都是一种。
不好意思,新人没分。。
...全文
204 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chichi_zhejiang 2009-03-31
  • 打赏
  • 举报
回复
递归是对的,可惜这算法速度有点慢.不知道有没有数学算法.
jhr924 2008-12-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zk20052009 的回复:]
......
不知道以后不上学了
这些题会不会也不会做了

用*代表苹果吧
比如说5个苹果放3个盒子里
*****
在其中我加2个板就能把苹果分成三份
*****||
让这7个东西随便排列7!
其中苹果位置互换无所谓,板位置互换无所谓
所以为7!/5!/2!
你的题同理就是(M+N-1)!/M!/(N-1)!

也可以想简单一点
一共有M+N-1个东西
从中挑出N-1个板子
[/Quote]

应该对着呢
ccc_moriya 2008-12-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tangmin0719 的回复:]
这里有个相似的问题。
递归法求解排列组合的一个题目(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个同样…
[/Quote]

很详细呢。。
ccc_moriya 2008-12-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hero706309 的回复:]
很明显
m
n 种方法。
拿一个苹果出来放到N个盒子,有N种方法;
再拿一个苹果出来放到N个盒子,有N*N种方法;
..........
N*N*N*.....
晕死,这种题目还用讨论吗?
[/Quote]

这肯定错。。。
ccc_moriya 2008-12-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tangmin0719 的回复:]
都给出一百点了,还没分。这么富呀。我可用分才10分呢。得抓紧赚点。。
[/Quote]
我开始以为总技术分就是可给的分,,搞错了,,发现自己的可用分有125,,开始给零分没人答,后来加分,,只能加100分。。。。郁闷
zk20052009 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hero706309 的回复:]
很明显
m
n 种方法。
拿一个苹果出来放到N个盒子,有N种方法;
再拿一个苹果出来放到N个盒子,有N*N种方法;
..........
N*N*N*.....
晕死,这种题目还用讨论吗?
[/Quote]

注意这道题的意思是
苹果是相同的不可分辨的
盒子是不同的
herochl 2008-12-19
  • 打赏
  • 举报
回复
很明显
m
n 种方法。
拿一个苹果出来放到N个盒子,有N种方法;
再拿一个苹果出来放到N个盒子,有N*N种方法;
..........
N*N*N*.....
晕死,这种题目还用讨论吗?
小墨鱼 2008-12-19
  • 打赏
  • 举报
回复
这里有个相似的问题。
递归法求解排列组合的一个题目(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;


zk20052009 2008-12-19
  • 打赏
  • 举报
回复
......
不知道以后不上学了
这些题会不会也不会做了

用*代表苹果吧
比如说5个苹果放3个盒子里
*****
在其中我加2个板就能把苹果分成三份
*****||
让这7个东西随便排列7!
其中苹果位置互换无所谓,板位置互换无所谓
所以为7!/5!/2!
你的题同理就是(M+N-1)!/M!/(N-1)!

也可以想简单一点
一共有M+N-1个东西
从中挑出N-1个板子

小墨鱼 2008-12-19
  • 打赏
  • 举报
回复
排列组合问题。。具体怎么算。。忘了。。
up
小墨鱼 2008-12-19
  • 打赏
  • 举报
回复
都给出一百点了,还没分。这么富呀。我可用分才10分呢。得抓紧赚点。。
herochl 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jhr924 的回复:]
引用 3 楼 hero706309 的回复:
m
n 种方法。
拿一个苹果出来随机放个盒子,有N种方法;
再拿一个苹果出来随机放个盒子,有N种方法;
..........
N*N*N*.....


应该不对吧
[/Quote]
学过数学的都知道!高手有的来证实下
jhr924 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hero706309 的回复:]
m
n 种方法。
拿一个苹果出来随机放个盒子,有N种方法;
再拿一个苹果出来随机放个盒子,有N种方法;
..........
N*N*N*.....
[/Quote]

应该不对吧
herochl 2008-12-19
  • 打赏
  • 举报
回复
纯数学题目 没什么好说的
herochl 2008-12-19
  • 打赏
  • 举报
回复
m
n 种方法。
拿一个苹果出来随机放个盒子,有N种方法;
再拿一个苹果出来随机放个盒子,有N种方法;
..........
N*N*N*.....
jhr924 2008-12-19
  • 打赏
  • 举报
回复
以前高三的题了, 但是现在忘了, 心寒呀
这题以前可是我的强项呀
ccc_moriya 2008-12-19
  • 打赏
  • 举报
回复
没人会吗?? 我没总技术分,,可以给分的吗??

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧