Pokud by šlo pouze o vypsání možných kombinací konkrétního příkladu :
Dim al As New ArrayList
Dim foo As String = "abcdef"
For Each c1 As Char In foo
Debug.WriteLine(c1)
al.Add(c1)
For Each c2 As Char In foo
Debug.WriteLine(String.Join("", c1, c2))
al.Add(String.Join("", c1, c2))
For Each c3 As Char In foo
Debug.WriteLine(String.Join("", c1, c2, c3))
al.Add(String.Join("", c1, c2, c3))
For Each c4 As Char In foo
Debug.WriteLine(String.Join("", c1, c2, c3, c4))
al.Add(String.Join("", c1, c2, c3, c4))
For Each c5 As Char In foo
Debug.WriteLine(String.Join("", c1, c2, c3, c4, c5))
al.Add(String.Join("", c1, c2, c3, c4, c5))
For Each c6 As Char In foo
Debug.WriteLine(String.Join("", c1, c2, c3, c4, c5, c6))
al.Add(String.Join("", c1, c2, c3, c4, c5, c6))
Next
Next
Next
Next
Next
Next
Bohužel je to ve vb.net, ale převod nebude nijak složitý, 6x vnořené smyčky. Aby bylo nezávislé na počtu znaků, tak by šlo použít rekurzivní sama sebe volající funkci s jednou smyčkou v závislosti na délce retězce resp. počtu znaků, ovšem netuším, není-li v rozporu se zadáním ani jakým způsobem má být výsledek vrácen. Snad ještě někdo poradí mnohem lépe nebo zkuste pohledat nějaký generátor kombinací pomocí google pro inspiraci. ... Pro výpočet celkového počtu možností, nazývají to variace s opakováním, kde záleží na pořadí a prvky se opakují. Pro konkrétní příklad jsou to šestice znaků a pětice a čtveřice a ... až po jednotlivé znaky. Lze ověřit dle počtu prvků arraylistu a kupodivu to souhlasí. ... Tedy dle zadání : 6 ^ 6 + 6 ^ 5 + 6 ^ 4 + 6 ^ 3 + 6 ^ 2 + 6 ^ 1 = 46656 + 7776 + 1296 + 216 + 36 + 6 = 55986 ... Operátor ^ funguje ve VB.NET jako mocnina, v C# dělá bitovou operaci XOR. V C# je pro umocnění je funkce Math.Pow.
|