日期:2014-05-18  浏览次数:20938 次

关于一道数学题目,项目中用到相关模型了
一组容器 a1,a2.....a100

有3个人,a,b,c,每个人手里有不同数量的玻璃珠

a:60,
b:65,
c: 75

要求:1 往容器里面放玻璃珠,每个容器放2个
  2 每个容器的2个玻璃珠来自不同的人
  3 所有容器都有2个玻璃珠,所有人的玻璃珠不能有剩余


阐述放置过程和方法,最好能有相应的公式


------解决方案--------------------
公式没有,方法倒有一个:a从前往后放,b从后往前放,c把剩下的填满。
------解决方案--------------------
没有公式,也不需要使用算法

简单的玩意不需要搞复杂了,这个直接轮需挨个放入即可

轮询的方法也简单,直接累加取余即可
i++
 
i%3=0 取a放入
i%3=1 取b放入
i%3=2 取c放入

当然这是满足条件的一种方式,他当然是有规律,假设你想无规律,那就给球构造一个身份标志,标志他来自于谁已做判定标准


其实你只要满足第1,2个要求就ok了,至于第3个要求在这里基本就没有用处,假设珠子本身分配的满足条件,无论你怎么排都满足,假设珠子本身就不满足条件,无论你怎么排都无解



------解决方案--------------------
共100个容器,1-60中,把a分别放入其中,这样a放完了,容器还剩40个,里面只能放b和c,这样从b和c中分别取出40个放入剩下的40个容器,现在还剩25个b和35个c,正好是60个,分别放到1-60好容器,分别和其中已经存在的a组合成每个瓶子2个
------解决方案--------------------
探讨

帖子补充: 随机获取容器,,放置玻璃珠,

------解决方案--------------------
就像上面说的,你只管挨个放就是,只要球本身满足条件就有解,就不满足条件,怎么玩都是错

当然也不是没有你所谓的“算法”,但那种算法基本就是纯粹好玩,不能用来实际使用智能算法,比如遗传算法,模拟退火算法,这类算法是用来解一些常规手段基本无解的东西,采用的都是模拟,尝试和迭代,用来搞你的东西,完全是浪费性能。

比如你可以这么想,把你的东西看成硬盘,东西全乱放的,现在搞磁盘整理,把东西理顺。ok,磁盘整理怎么搞,先把不和要求的移到一边去,然后按要求配对以后,在填充回去。

当然你自己做过磁盘整理,你知道那完全是一个浪费时间的搞法,一次整理起码要2小时