gpt4 book ai didi

c# - 升序排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:40 24 4
gpt4 key购买 nike

我正在尝试获取列表的所有预定义长度排列,仅按升序排列。

For example, take the set:  "ABCDE"
I'd like the returning result to be:
ABC, ABD, ABE, ACD, ACE, ADE, BCD, BCE, BDE, CDE

换句话说,“B”永远不能出现在“A”之前(升序),但我希望每个变体都符合此要求。

我不想使用 LINQ,我正在尝试找出实现它的最快方法(速度是这个应用程序的一个因素)。

到目前为止,我有一个字符列表列表:

List<List<char>> Combinations;

其中内部“列表”将是一个组合,如“ABC”(每个字母都是一个字符),而外部列表将是所有组合的列表。

每个结果集的长度(在上面的示例中为 3)需要是动态的,所以我想我需要某种递归...我只是不知道如何实现它。

如有任何帮助,我们将不胜感激!

编辑

到目前为止,这是我所拥有的(我觉得我已经接近了......我只是无法真正构建最终列表(联合不起作用 - 我是否使用不正确?) :

    private List<List<char>> AscendingPermute(List<char> InMovements, int Combinations)
{
List<List<char>> Ret = new List<List<char>>();

for(int i = 0; i <= InMovements.Count - Combinations; i++)
{
if(Combinations <= 1){
Ret.Add(new List<char>() {InMovements[i] });
return Ret;
}
else
{
Ret.Union(AscendingPermute(InMovements.GetRange(1, InMovements.Count - 1), Combinations - 1));
}
}

return Ret;
}

我走在正确的轨道上吗?我错过了什么?

谢谢!

最佳答案

所以您想要 n 个元素的集合中所有可能的 k 元素,并且您想要每个 k 元素列表按升序排列?

看这里:Algorithm to return all combinations of k elements from n

关于c# - 升序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com