一个比较难的问题,大家可以来看看
有一个集合V{0,1,2,3,4,......N} (N<1000)
有一个数组String a[],其中a的元素是由V的子集构成,a的长度为1000000;
举例来说
比如 a[0]=1|6|7 (其中|为分隔符)
a[1]=2|10
.
.
.
a[m]=1|2|3|6|7
.
.
.
a[k]=100|101
.
.
.
a[1000000]=1|100|101|200
a[m] 中包含了1、2、3、6、7,a[0]中包含了1、6、7,显然a[0]是a[m]的子集,此时则去掉数组元素a[m];
a[k]中包含100、101,a[1000000]包含了1、100、101、200,显然a[k]是a[1000000]的子集,此时则去掉数组元素a[k];
也就是说只要数组元素a[i]在a中含有a[i]的子集,则去掉a[i]。
处理完数组a后,输出新的数组。
要求:最坏情况下(1000000个元素互不为子集,输出新数组长度也为1000000个),要求处理数组时间规模不大于O(1000000*log1000000),具体如何实现,
[此贴子已经被作者于2006-7-11 9:57:11编辑过]