Wie funz. das Programm????
-
Hi,
kann mir mal jemand erklären wie das Programm funktioniert???
#include <stdio.h> void lotto(unsigned low, unsigned ball) { unsigned i, j; static unsigned numbers[6]; if (ball == 6) { for (j = 0; j < 6; ++j) printf("%3u", numbers[j]); putchar('\n'); } else for (i = low + 1; i <= 49; ++i) { numbers[ball] = i; lotto(i, ball + 1); } } int main() { lotto(0, 0); }
MfG
white.rabbit
-
Hi white.rabbit,
bist du immer noch bei 6 aus 49?Willst du das Programm für dein Problem von
neulich verwenden, oder nur so aus Interesse?Falls du alle 6 aus 49 Kombinationen haben willst,
dann würd ich das jedenfalls nicht rekursiv machen!!Ansonsten nimm doch in der for-Schleife <= 3
und 2 Bälle und schreib dir die Aufrufe auf.
Dann sieht man am besten was passiert.Jockel
-
Hi
ja ich versuche immer nocht aber ich brauche ein Algo welches mir genau 13.983.816 Varianten ausgibt dh. ohne Wiederholungen. Und bin noch am überlegen wie ich diese Anzahl von Varianten in eine Datei speichern kann.
warum ist hier rekursiv nicht optimal?
-
#include <stdio.h> #include <stdlib.h> void print_array(int k, int array[]){ static int count = 0; int i; printf("%3d: (",++count); for(i=0; i<k-1; i++) printf("%d, ", array[i]); printf("%2d)\n",array[k-1]); } void komb_ow(int n, int k, int array[], int x){ int i, max; if(x < k){ max = x ? array[x-1] : 0; for(i = max+1; i <= n-k+x+1; i++){ array[x] = i; komb_ow(n,k,array,x+1); } } else print_array(k, array); } int main(){ int array[6]; printf("49-6-Kombinationen ohne Wiederholung\n"); komb_ow(49,6,array,0); system("pause"); }
Aus dem Buch, mit dem ich einst C/C++ lernte
http://www.amazon.de/exec/obidos/ASIN/3898422739
Wie ich sehe bereits sogar schon eine neue Auflage. Ich hatte noch die 1. Auflage bzw hab noch *g*Damit wäre dem Copyright jetzt auch genüge getan *g*
In dem Buch gehts eigentlich um ein 4-2-Beispiel. Deswegen ist Rekursion OK. Bei 46-6 ist das nicht mehr so schön. Bei jedem Rekursionsaufruf wird nämlich ein komplett neuer Stack aufgerollt. Kostet Zeit. Eine iterative Lösung wäre schneller.
-
zu dem buch:
das hab ich auch, in der 2.ten ausgabe.
und soweit ich das bis jetzt beurteilen kann,
is das sehr gut. ich hab mit dem legozeugs angefangen
(mindstorms) un das mit nqc programmiert,
dann eben dieses buch, und jetzt hab ich mit windows-programmierung
angefangen, und das buch kann man immer noch gebrauchen!!!aso, auf nen gutes buch is meiner meinung nach KEINESFALLS
zu verzichten!!!