读书人

求高效算法.有挑战精神的进.多谢

发布时间: 2012-03-13 11:21:11 作者: rapoo

求高效算法.有挑战精神的进.在线等,谢谢
问题:
一定单信息:结构如下
广告1:电视台1,电视台2 ....
广告2:电视台2,电视台3 ....
.
.
其中广告用AD表示,电视台用TV表示(可以用TV_ID表示,INT型).(其中AD,TV的数目可能很多,所以不适合用FOR循环)
如一定单信息:
AD1 : TV2,TV3,TV4
AD2 : TV1,TV2,TV4
AD3 : TV2,TV4,TV5
我要得到的结果是:对上面的信息进行处理,加入一版本信息 REGION,得到的结构如下:
版本1:
AD2 : TV1
版本2:
AD1,AD2,AD3 : TV2
版本3:
AD1 : TV3
版本4:
AD1,AD3 : TV4
版本5:
AD2,AD3 : TV5
即:后面的电视台不能重复.
例如不能:
版本1:
AD2 : TV1
版本2:
AD1,AD3 : TV2,TV4(注意)
版本3:
AD1 : TV3
版本4:
AD1,AD2 : TV2(注意)
版本5:
AD2,AD3 : TV5
上面有2个版本重复了TV2.所以不符合要求.

我的想法是用链表类:把每条广告及对应的电视台放一链表中,其中按TV_ID的大小由小到大排列;然后利用一算子,一向下移动方法去比较.还有一版本类:把相同电视台的广告放一起,得出结果后再进行处理,把相同电视台的广告合并到一个类元素中.如:
版本:
AD1,AD3 : TV2
版本:
AD1,AD2 : TV2
合并为:
版本:
AD1,AD2,AD3 : TV2
以保证电视台不重复.

我觉得这种算法还行:例如3条广告,每条广告对应5个电视台,则只需要 3*5 = 15 次,如果用FOR循环则比较次数较多,不适合大量数据.

对我的说明有不明白的地方可以指出来.
现求更高效的算法,希望大家发表自己的看法.谢谢.






[解决办法]
简单的二元关系 <AD, TV> , 楼主不要低估计算机的性能



[解决办法]
分解,排序,合并。

读书人网 >软件架构设计

热点推荐