C# 获取数组中特定长度的所有子数组

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#中数组的子集。 所有其他例子对我帮助不大

我想得到一个数组的特定大小的所有子集

例如,如果输入数组是{1,2,3,4},我想要所有大小为3的子集, 必须返回所有唯一子集{1,2,3}、{1,2,4}、{2,3,4}、{1,3,4}


我是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循环