C# 获取数组中特定长度的所有子数组
我需要帮助获取C#中数组的子集。 所有其他例子对我帮助不大 我想得到一个数组的特定大小的所有子集 例如,如果输入数组是{1,2,3,4},我想要所有大小为3的子集, 必须返回所有唯一子集{1,2,3}、{1,2,4}、{2,3,4}、{1,3,4}C# 获取数组中特定长度的所有子数组,c#,arrays,subset,C#,Arrays,Subset,我需要帮助获取C#中数组的子集。 所有其他例子对我帮助不大 我想得到一个数组的特定大小的所有子集 例如,如果输入数组是{1,2,3,4},我想要所有大小为3的子集, 必须返回所有唯一子集{1,2,3}、{1,2,4}、{2,3,4}、{1,3,4} 我是C#新手,非常感谢您的帮助。查看本文。用各种编程语言的例子详细描述了这一点。我不觉得有必要复制其他解决方案,因此我将把它作为一个链接,供您从众多示例中选择,以帮助您 听起来像是家庭作业 因为我假定大小是可变的,所以您需要使用递归。比如:
我是C#新手,非常感谢您的帮助。查看本文。用各种编程语言的例子详细描述了这一点。我不觉得有必要复制其他解决方案,因此我将把它作为一个链接,供您从众多示例中选择,以帮助您
听起来像是家庭作业 因为我假定大小是可变的,所以您需要使用递归。比如:
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();
}
}
static void Main(字符串[]args)
{
int[]originalList=新int[]{1,2,3,4};
Stack currentList=新堆栈();
List listOfSubsets=新列表();
BuildListOfSubsets(OriginallList,listOfSubsets,3,0,currentList);
}
私有静态void BuildListOfSubsets(int[]originalList,List listOfSubsets,int sizeOfSubsetList,int currentLevel,Stack currentList)
{
if(currentList.Count==sizeOfSubsetList)
{
int[]copy=newint[sizeOfSubsetList];
currentList.CopyTo(复制,0);
子集合列表。添加(副本);
}
其他的
for(int ix=currentLevel;ix
结果将显示在listOfSubsets列表中。看看是否可以找到一种优化方法,以便尽早离开for循环