Variationen mit Wiederholung



  • Fatlum schrieb:

    Super,
    in erster Linie vielen Dank das ihr mir hilft. Tut mir Leid dref falls ich mich Blöd ausgedrückt habe. Beides geht in die richtige Richtung. ( Kein Wunder wenn man die Richtigen fragt 😉 ). Als ich versucht habe die zahlen einzugeben die ich tatsächlich brauche ( 13^13 ) hat es nicht funktioniert 😞 könnt ihr mir bitte sagen wodran das liegt und wie ich das richtig mache ?

    Was meinst du mit 13^13? Eine Sequenz von 13 Zeichen, aus einem Zeichensatz von 13 möglichen Zeichen?



  • wenn ich 13 verschiedene Farben haben, bräuchte ich dann alle Möglichkeiten mit zurücklegen. Das wären dann : 302.875.106.592.253 Möglichkeiten. Meinst du das ist möglich ?



  • Fatlum schrieb:

    wenn ich 13 verschiedene Farben haben, bräuchte ich dann alle Möglichkeiten mit zurücklegen. Das wären dann : 302.875.106.592.253 Möglichkeiten. Meinst du das ist möglich ?

    Eine recht kleine Zahl. 😉
    Müsste aber noch in long long passen.



  • Und wie sieht dann der Code aus ? 🙄 ( Ich weis ich bin total Ahnungslos dadrin 😃 )



  • Wieviel Zeit hast du denn alle Kombinationen zu erzeugen und zu speichern? 🙄
    Selbst bei 1 Milliarde Zahlen pro Sekunde bräuchte das Programm immer noch 302875 Sekunden (~ 3,5 Tage)...

    Und der Speicherplatz dafür beträgt dann sizeof(long long) * (13^13) Bytes = 8 * 302875106592253 Bytes = 2256595 GB = 2203 TB = 2,15 PB (petabyte).



  • Darüber habe ich mir noch keine Gedanken gemacht 😮



  • Th69 schrieb:

    Und der Speicherplatz dafür beträgt dann sizeof(long long) * (13^13) Bytes = 8 * 302875106592253 Bytes = 2256595 GB = 2203 TB = 2,15 PB (petabyte).

    Jetzt mach ihm keine Angst. Er muss ja nicht alles speichern. 😃



  • Erklär mal, welches Problem Du lösen willst.



  • Fatlum schrieb:

    Als ich versucht habe die zahlen einzugeben die ich tatsächlich brauche ( 13^13 ) hat es nicht funktioniert 😞 könnt ihr mir bitte sagen wodran das liegt und wie ich das richtig mache ?

    int main()
    {
    	const unsigned num = 13;
    	unsigned s[num];
    	unsigned startValue = 1;
    	unsigned endValue = startValue+num-1;
    
    	for(size_t i=0;i<num;++i)
    		s[i]=startValue;
    
    	int i=0;
    	do
    	{
    		std::cout << std::setw(4) << ++i << " ";
    		for(size_t k=0;k<num;++k)
    			std::cout << std::setw(2) << s[k] << " ";
    		std::cout << "\n";
    	} while (next_variation(&s[0], &s[num], endValue, startValue, 1));
    

    Bei 1000 Ausgaben pro Sekunde kannst du th69s Wert mit 1.000.000 multiplizieren. Ich will ehrlich sein, die Zeit habe ich wohl nicht mehr hier auf Erden...
    Es ist aber auch generell der falsche Ansatz, denn:

    Furble Wurble schrieb:

    Erklär mal, welches Problem Du lösen willst.



  • erwähnen könnte man auch noch
    http://en.cppreference.com/w/cpp/algorithm/next_permutation

    das zeit-problem besteht aber natürlich weiterhin 😉


Anmelden zum Antworten