我想要一個C#方法,將能夠生成排列和變化。我認爲這最好在一個例子中解釋。我正在用最好的方式來完成這個任務。這就是我在腦海中想的。排列/變化
我正在尋找如何解決這個問題,也許僞代碼的建議?
ABC變得
步驟1)置換沒有重複:
ABC
ACB
BAC
BCA
CAB
CBA
步驟2)與變動|
ABC
A|BC
AB|C
ACB
A|CB
AC|B
BAC
B|AC
BA|C
BCA
B|CA
BC|A
CAB
C|AB
CA|B
CBA
C|BA
CB|A
所以,你最終與最後一組
A|BC
AB|C
A|CB
AC|B
B|AC
BA|C
B|CA
BC|A
C|AB
CA|B
C|BA
CB|A
更新的:只是一個快速的實現我寫了,我知道這是可怕的,任何意見歡迎。
var perms = Permuter.Permute(new Char[] {'a', 'b', 'c'}).ToList();
DisplayResult(perms);
foreach (var permutation in perms.ToList())
{
var p = permutation.ToList();
int splitPos = 1;
do
{
for (int i = 0; i < splitPos; i++)
{
Console.Write(p[i]);
}
Console.Write("|");
for (int j = splitPos; j < p.Count; j++)
{
Console.Write(p[j]);
}
Console.WriteLine("");
splitPos++;
} while (splitPos < p.Count);
}
你想以字符串形式表示結果嗎? –
A,B和C實際上是整數的集合 – myew
是「A | BC | D」是ABCD的變體嗎? –