请教一个算法!急! (200分)

J

jereen

Unregistered / Unconfirmed
GUEST, unregistred user!
有n个m种颜色w种重量的小球,编号为1--N,颜色编号为A,B,C,D...要求:
从中随机的取出A色球x1个,B色球x2个...以此类推,w <x1+x2+..+xm< n,
并且要包含尽可能多的重量种类
补充:这些小球都是存放在数据库中的记录,问题就是从数据库中随机取出
符合上述条件的记录!为了把问题说清楚,才用小球做比喻的。
注意:球的个数是不定的!每种球有多少个也是不定的。颜色,重量的种类数也是不定的!
要取多少个(按颜色取)由用户输入确定!
但肯定足够多!
我再说简单一些
比如小球有50个,共红白蓝三色,小球分为5g,10g,15g,100g四种
数据库中纪录如下:
编号 颜色 重量 标记
1 red 10g 未取中
2 blue 5g 未取中
3 red 100g 未取中



50 white 15g 未取中
要求随机取出红色球3个,蓝色球5个,白色球2个,并且要包含尽可能多的重量种类。
 
我认为这种问题是一个程序员自己应该解决的
 
我不是没时间了嘛!!!
 
算法问题应该自己解决
 
既然随机为什么还要保证有至少一个被取到的条件?
 
我理解是随机的提取 被提取过的放弃
 
就是因为这样,才难写的
 
不是很难 自己想吧如果连基本算法都问那我们是什么 文字输入
 
补充:这些小球都是存放在数据库中的记录,问题就是从数据库中随机取出
符合上述条件的记录!
 
w <x1+x2+..+xm< n
这句话什么意思
 
就是说取出的小球数小于小球的总数,大于小球重量的种类数
比如小球有50个,共红白蓝三色,小球分为5g,10g,15g,100g四种
数据库中纪录如下:
编号 颜色 重量 标记
1 red 10g 未取中
2 blue 5g 未取中
3 red 100g 未取中



50 white 15g 未取中
要求随机取出红色球3个,蓝色球5个,白色球2个,并且每种重量都要有。
 
一个一个取呗
先在所有未取中的球中随机取出一个红色球,把与该球重量相等的球都标记为取中
,然后在所有未取中的球中再取第二个红色球,
如果没有需要的球,就在取中的球中找
一个一个的这样取,取过的就把同重量球标上标记,再在未取过的球中找需要的球,
找不到再从取过的球中取
 
to jereen:
老兄,这明明是一个算法问题,怎么不放到“数据结构”分类中去?
有趣...
 
大富婆:
你想得太简单了!因为有可能某种颜色的球中不包含某些重量,所以就有可能取到后来发现
有些重量取不到!那样就得回溯了!
creation-zy:
多谢提醒!
 
问题的矩阵描述:
球 的 个 数
重量 Color1 Color2 Color3
1 1 0 3
2 3 2 1
3 0 1 3
4 0 2 4
要取的球数 2 1 3
要求:每个重量都要取到。
思考中...
 
每种球有多少个?
 
天真:
球的个数是不定的!每种球有多少个也是不定的。
颜色,重量的种类数也是不定的!
要取多少个(按颜色取)由用户输入确定!
但肯定足够多!
 
这个问题在实际中是这样的
在公民中按要求随机抽取一部分人组成听证会,公民的属性有很多种的
而要求也是五花八门:
比如各党派满足一定比例,按性别占一定比例,按年龄层占一定比例,还有各地区,
各行业。。。。。
总之是很烦了。
小球只有2种属性,是最简单的情况。
 
没人帮忙吗?:(
 
顶部