Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Ziehen mit Zurücklegen aber ohne Reihenfolge

  Alt 28. Mär 2009, 18:10
Oh, dir war auch gerade langweilig ?

Ich habs so:
Code:
public partial class Form1 : Form
    {
        private List<char> Buchstaben;

        public Form1()
        {
            InitializeComponent();

            Buchstaben = new List<char>();

            Buchstaben.AddRange(new char[] {'A', 'B', 'C', 'D'});
        }

        private void Kombinationen<Type>(IList<Type> Menge, int count)
        {
            Kombinationen<Type>(Menge, count, 0, new Stack<Type>());
        }

        private void Kombinationen<Type>(IList<Type> Menge, int count, int start, Stack<Type> Elemente)
        {
            if (count == 0)
            {
                String kombi = "";
                // evtl. Stringbuilder benutzen
                foreach (var elem in Elemente)
                {
                    kombi = elem.ToString() + ' ' + kombi;
                }
                listBox1.Items.Add(kombi);
            }
            else
            {
                for (int i = start; i < Menge.Count(); i++)
                {
                    Elemente.Push(Menge[i]);
                    Kombinationen<Type>(Menge, count - 1, i, Elemente);
                    Elemente.Pop();
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Kombinationen<char>(Buchstaben, 3);
        }
    }
Hier übrigens mein Ergebnis:
Code:
A A A
A A B
A A C
A A D
A B B
A B C
A B D
A C C
A C D
A D D
B B B
B B C
B B D
B C C
B C D
B D D
C C C
C C D
C D D
D D D
  Mit Zitat antworten Zitat