首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

你能在C#中优雅地编写排列函数吗?

当然可以。在C#中,可以使用LINQ(Language Integrated Query)来优雅地编写排列函数。以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        List<int> numbers = new List<int> { 1, 2, 3 };
        var permutations = GetPermutations(numbers);

        foreach (var permutation in permutations)
        {
            Console.WriteLine(string.Join(", ", permutation));
        }
    }

    static List<List<T>> GetPermutations<T>(List<T> list)
    {
        List<List<T>> result = new List<List<T>>();

        if (list.Count == 1)
        {
            result.Add(list);
            return result;
        }

        for (int i = 0; i< list.Count; i++)
        {
            T currentElement = list[i];
            List<T> remainingElements = new List<T>(list);
            remainingElements.RemoveAt(i);

            List<List<T>> subPermutations = GetPermutations(remainingElements);

            foreach (List<T> subList in subPermutations)
            {
                List<T> newList = new List<T> { currentElement };
                newList.AddRange(subList);
                result.Add(newList);
            }
        }

        return result;
    }
}

在这个示例中,我们首先创建了一个包含整数1、2和3的列表。然后,我们使用GetPermutations方法来获取这个列表的所有排列。GetPermutations方法使用递归来生成所有可能的排列。最后,我们将结果打印到控制台上。

这个示例使用了泛型方法,因此可以用于任何类型的列表。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券