【发布时间】:2015-01-31 04:47:57
【问题描述】:
我们正在编写一个 C# 应用程序来帮助删除不必要的数据重复。只有在它接收到的所有数据都被其他转发器接收到的情况下,才能移除转发器。作为第一步,我们需要做的解释如下:
我有 int 数组的集合,例如
一个。 {1、2、3、4、5}
b. {2、4、6、7}
c。 {1、3、5、8、11、100}
可能有数千个这样的数组。我需要找到可以删除的数组。一个数组只有在它的所有数字都包含在其他数组中的情况下才能被删除。在上面的示例中,可以删除数组 a,因为它的数字 2 和 4 在数组 b 中,而数字 1、3、5 在数组 c强>。
这种操作最好的方法是什么?
【问题讨论】:
-
你想要最少还是最少的数组?
-
这个算法是否需要确定性(即无论操作顺序如何都给出相同的结果)?
-
数据是否总是在
1..100范围内的整数? -
harold - 是的,我们需要的数组数量最少。 M. Page - 是的。 dav_i - 不,它可能是大于 100 的整数,目前最常见的是 6 位整数。
-
@genichm 有一点不同,剩下的最小数组个数是一个比较难的问题(Hitting Set),一些最小数组个数可以通过迭代删除得到。
标签: c# arrays algorithm array-algorithms