我想要帮助在C#中获取数组的子集。 所有其他例子对我帮助不大。
我想得到一个特定大小的数组的所有子集。
例如,如果输入数组是{1,2,3,4}并且我想要所有大小为3的子集, 必须返回所有唯一子集{1,2,3},{1,2,4},{2,3,4},{1,3,4}。
我是C#的新手,非常感谢任何帮助。
答案 0 :(得分:0)
查看这篇文章。这将通过各种编程语言中的示例进行详细描述。我觉得不需要复制其他解决方案,所以我会把它作为一个链接供你从许多应该帮助你的例子中选择
答案 1 :(得分:0)
听起来很像家庭作业......
因为我假设大小是可变的,所以你需要使用递归。类似的东西:
static void Main(string[] args)
{
int[] originalList = new int[] { 1, 2, 3, 4 };
Stack<int> currentList = new Stack<int>();
List<int[]> listOfSubsets = new List<int[]>();
BuildListOfSubsets(originalList, listOfSubsets, 3, 0, currentList);
}
private static void BuildListOfSubsets(int[] originalList, List<int[]> listOfSubsets, int sizeOfSubsetList, int currentLevel, Stack<int> currentList)
{
if (currentList.Count == sizeOfSubsetList)
{
int[] copy = new int[sizeOfSubsetList];
currentList.CopyTo(copy, 0);
listOfSubsets.Add(copy);
}
else
for (int ix = currentLevel; ix < originalList.Length; ix++)
{
currentList.Push(originalList[ix]);
BuildListOfSubsets(originalList, listOfSubsets, sizeOfSubsetList, ix + 1, currentList);
currentList.Pop();
}
}
结果将在listOfSubsets列表中。看看你是否能找到优化以尽早离开for循环。