首页 新闻 会员 周边

算法问题:按记录总值比例分组记录!请大家帮忙

0
悬赏园豆:100 [已关闭问题]

一张TableA,里面有ID、Value两个字段,sum(value)为总值(TValue),另还有一张不同物品占总值(TValue)比例的的表TableB,m_id为物品id,m_value为占Tvalue的部分值,问题如下: 


如何将TableA的记录根据不同m_id占总值(TValue)的m_value,分组到不同的m_id中去??

我表述的可能不是很明白,简单的说就是将 一堆记录按照value值累加相同的原则分入不同的分组,举个例子
TableA 有 50 条 记录,每条记录的id不同,value 有可能不同 , 但 sum(value)=TValue=100
TableB 有如下三条记录
m_id  m_value
  A      50
  B      30
  C      20
即A、B、C的m_value值=TValue=100
要求将TableA中的50条记录,分三组分别给A、B、C,同时这些分组的记录的value相加等于A、B、C的m_value

希望我的表达各位能明白,求算法解决方案,非常感谢!

问题补充: 好像是背包算法,不确定,求帮忙 感谢一楼,表A中的value没什么规律,可以都看成整数,可以参照一下模拟 测试数据少一点吧,要求表A的10条数据分组到表B的不同m_value中去,允许一定误差,误差值可以设定 (即 |A表中id=1、2、3的value相加 - m_id位A的m_value|< 误差值 ) TableA 10条记录 总值为100 TableB还是一样三条记录 id value       m_id m_value 1 25        A 50 2 15         B 30 3 10         C 20 4 3 5 1 6 5 7 14 8 16 9 5 10 6
阿啄的主页 阿啄 | 初学一级 | 园豆:100
提问于:2009-08-27 21:48
< >
分享
其他回答(2)
0

您这个问题问的也太不清楚了吧。

比如TableA中的那些value有没有什么规律呢? 最大数是多少 最小数是多少 是否有小数?

彷徨...... | 园豆:55 (初学一级) | 2009-08-27 22:16
0

功能明白,但是我却不知道你要求是在SQL里实现,还是C#里面实现。

 另:1.你的TABLE_A中的数据是什么样的。如果有(>50 && >误差值)的数要怎么算。

       2.TABLE_A中的数据有没有负数,如果有要怎么用(A.不管,直接排除;B.用绝对值;C.按负数计算.....)

风飘零 | 园豆:57 (初学一级) | 2009-08-28 10:51
0

我实现了一下,见下面链接

http://www.cnblogs.com/eaglet/archive/2009/08/28/1555645.html

eaglet | 园豆:17139 (专家六级) | 2009-08-28 11:15
非常感谢! 后来我自己实现了,看了你的帖子,比我的强多了,看回复貌似我是那个贪婪算法
支持(0) 反对(0) 阿啄 | 园豆:100 (初学一级) | 2009-12-04 14:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册