三种不同颜色的小球,各三个,要放在三个不同的盒子里,每个盒子放三个,有没有简单的算法。

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
  • 打赏
  • 举报
回复
不就是组合吗?
我写过类似的程序,还可以不只三个球。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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