我需要帮助了解如何编写排列算法。 (如果这是偶数排列,它们必须按顺序排列并使用相同的值)。
List<string> str = new List<string>{"a", "b", "c", "d"};
如何获取此列表中可用的每个排列的列表?例如。
a、b、c、d
ab、c、d
ab、cd
abc、d
abcd
a、bc、d
a、bcd
a、b、cd
出于某种原因,我找不到开始的模式。当连接的字符串有 X 个字符时,我还希望能够忽略排列。因此,如果 X 为 4,则在该列表中,数字 5 将不存在,并且会有 7 种排列。
private List<string> permute(List<string> values, int maxPermutation)
{
//alittle help on starting it would be great :)
}
我查看并阅读了 this ,但他不遵守命令。
最佳答案
这相当简单:您可以在三个位置放置逗号或不放置任何内容。 2^3 二进制数对应有八种组合。
对于从 0 到 7(含)的每个数字,生成一个二进制表示形式。在二进制表示为 1 的每个位置加一个逗号;不要在零处添加逗号。
for (int m = 0 ; m != 8 ; m++) {
string s = "a";
if ((m & 1) != 0) s += ",";
s += "b";
if ((m & 2) != 0) s += ",";
s += "c";
if ((m & 4) != 0) s += ",";
s += "d";
Console.WriteLine(s);
}
关于c# - 字符串列表的排列算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050204/