Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在数组中查找重叠数据_C#_Arrays_Algorithm_Array Algorithms - Fatal编程技术网

C# 在数组中查找重叠数据

C# 在数组中查找重叠数据,c#,arrays,algorithm,array-algorithms,C#,Arrays,Algorithm,Array Algorithms,我们正在编写一个C#应用程序,它将帮助删除不必要的数据中继器。中继器只能在其接收到的所有数据都被其他中继器接收的情况下移除。我们需要做的第一步如下: 例如,我有int数组的集合 a。{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中 执行此类操作的最佳方法是什么?这是

我们正在编写一个C#应用程序,它将帮助删除不必要的数据中继器。中继器只能在其接收到的所有数据都被其他中继器接收的情况下移除。我们需要做的第一步如下:

例如,我有int数组的集合

a。{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 => 2
2 => 2
3 => 2
4 => 2
5 => 2
6 => 1
7 => 1
...

检查每个数组,如果所有成员的丰度都大于1,则删除数组并减少字典中每个数字的计数

获取剩余数组的最小数目(与无法删除更多数组的数组子集相反)是NP难的。然而,即使有数千个数组,如果您在链接的Wikipedia文章中对公式应用混合整数程序解算器,它也很有可能找到最佳解决方案。

您希望剩下的数组数量最少还是最少?此算法需要确定性吗(即:给出相同的结果,以操作顺序为准)数据是否总是在
1
范围内的整数。
100
?harold-是的,我们需要剩余的最小数组数。M.Page-是。dav_i-否,可能是大于100的整数,此时最常见的是6个整数。@genichm有一个区别,剩余的最小数组数是一个更难的问题(点击设置),可以通过迭代删除数组来获得最少数量的数组。好主意,但创建该字典可能并不容易:)@Ali sepheri.Kh谢谢:)我已经开始实现了。@genichm:祝你好运:)我会考虑更好的解决方案。@alisepri.Kh以降低速度为代价,您可以使用一些策略性的删除顺序(例如,“具有最高最低丰度的数组优先”)来降低对输入顺序的敏感性@harold:是的,我同意。或包含多个1的数字的数组,应为结果。