社区
数据结构与算法
帖子详情
三种不同颜色的小球,各三个,要放在三个不同的盒子里,每个盒子放三个,有没有简单的算法。
srain
2002-03-08 02:12:59
如题目三种不同颜色的小球各有三个,要放在三个不同的盒子里每个盒子都放三个
小球。
怎么编写程序找到所有放法。
谁能写出简单的解法,或者思路。
毕竟不是编程出身,想不出好的办法。
应该不难吧
...全文
1352
11
打赏
收藏
三种不同颜色的小球,各三个,要放在三个不同的盒子里,每个盒子放三个,有没有简单的算法。
如题目三种不同颜色的小球各有三个,要放在三个不同的盒子里每个盒子都放三个 小球。 怎么编写程序找到所有放法。 谁能写出简单的解法,或者思路。 毕竟不是编程出身,想不出好的办法。 应该不难吧
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LeeMaRS
2002-03-13
打赏
举报
回复
srain(),你能不能提供几个数据和答案.我想试试呀.我正在学组合数学
godofdark
2002-03-13
打赏
举报
回复
首先从redBall,yellowBall,greenBall中选球把box[1]装满,然后用剩下的球装剩下的盒子,用由于每个box有很多中装法所以要用AddBall()来低归完成,而Distribution()函数每次表示装填一个盒子。所以用这两个函数相互低归调用就可以完成这个操作了。但此方法对盒子来说是应该带编号的。也就是盒子是相互不同的。不知道正确否?
Arter
2002-03-13
打赏
举报
回复
球RGB
r1+r2+r3 = 3 (ri>=0)
g1+g2+g3 = 3 (gi>=0)
b1+b2+b3 = 3 (bi>=0)
盒子
r1+g1+b1 = 3
r2+g2+b2 = 3
r3+g3+b3 = 3
求满足条件的解(R,G,B)
R=(r1,r2,r3)
G=(g1,g2,g3)
B=(b1,b2,b3)
LeeMaRS
2002-03-13
打赏
举报
回复
你是要数目还是打印出所有的放法?
我编这个程序试求数目.也不知道对不对.我组合数学学得不好.
#include "iostream.h"
long double fac(int n);
void main()
{
int red,green,blue,box;
cin>>red>>green>>blue>>box;
cout<<(fac(red+green+blue)/fac(red)/fac(green)/fac(blue)/fac(box))<<endl;
}
long double fac(int n)
{
int i;
long double r;
for(r=1,i=2;i<=n;i++)
r*=i;
return r;
}
srain
2002-03-13
打赏
举报
回复
godofdark
讲讲你的程序,我看不太懂。怎么运行?
如果可以,立刻会给分的。
srain
2002-03-13
打赏
举报
回复
我没学过组合数学,所以我也不怎么懂,才问大家的。
godofdark
2002-03-12
打赏
举报
回复
BOX box[3];
void Distribution(int red,int yellow,int green)
{
int i = 0;
while( box[i].Full() ) i++;
if( i==3 ){
box1.Display();
box2.Display();
box3.Display();
return;
}
AddBall(red,yellow.green.i);
}
void AddBall(int red,int yellow,int green.int i)
{
if( box[i].Full() ){
Distribution(red,yellow.green);
return;
}
if( red ){
box[i].AddColor(1);
red--;
AddBall(red,yellow,green.i);
red++;
}
if( yellow ){
box[i].AddColor(2);
yellow--;
AddBall(red,yellow.green.i);
yellow++;
}
if( green ){
box[i].AddColor(3);
green--;
AddBall(red,yellow,green,i);
green++;
}
}
LeeMaRS
2002-03-11
打赏
举报
回复
你需要找到一种算法 尽量只使用你所有的条件(红5 黄3 绿4 三盒子) 而不依靠人工参与.这样就容易办了.
不好意思,我组合数学学得非常非常菜.
srain
2002-03-11
打赏
举报
回复
稍微解释一下你的思路,能否用简单的方法找到所有的可能?
如果球的个数不想等,比如红5,黄3,绿4,还是放在三个盒子里,有这样的算法可以解决吗?能写出这样通用性很强的函数吗?如果嫌分数少还可以再加。
LeeMaRS
2002-03-09
打赏
举报
回复
我先猜猜答案,是不是280种......
cxjddd
2002-03-09
打赏
举报
回复
不就是组合吗?
我写过类似的程序,还可以不只三个球。
步步高学案导学设计学高中数学人教B选修精要计数原理习题课PPT课件.pptx
步步高学案导学设计学高中数学人教B选修精要计数原理习题课PPT课件.pptx
西安交大18年压轴题程序
西安交大18年压轴题程序和测试用例:n个相同的
小球
,可以
放
入m个相同的
盒子
里
,允许有空盒,问有多少种
不同
方法
高中数学分类加法计数原理和分步乘法计数原理的应用北师大PPT学习教案.pptx
高中数学分类加法计数原理和分步乘法计数原理的应用北师大PPT学习教案.pptx
隔板法、插入法、捆绑法解决组合问题.doc
隔板法、插入法、捆绑法解决组合问题.doc
高中数学分类加法计数原理和分步乘法计数原理的应用课件北师大版PPT学习教案.pptx
高中数学分类加法计数原理和分步乘法计数原理的应用课件北师大版PPT学习教案.pptx
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章