Moin!
Also habe mich jetzt für eine interaktive Eingabe entschieden. Heißt, der User wird am Anfang gefragt, wieviele Zeile, Spalten, welche Summen etc. er haben will. Wenn man die Spalten und Zeilen variabel gestalten will, wäre ein festes Array auch unpraktisch. Habe meine Code nochmal "optimiert". In der Matrix wird nicht mehr der letzte Eintrag gesucht sondern vom Eintrag davor zwischengespeichert. Damit hat sich die Zeit auf meinem Rechner von 16 auf 11 Sekunden verkürzt. Das Ganze hier in der Datei.
http://www.herber.de/bbs/user/116726.xls
Das sind zudem noch ein paar Anpassungen dabei. Eine Variante sucht bis zu 10 Lösungen ( falls es sie gibt). Könnte man noch einstellen. Bei deiner Ausgangsvariante habe ich 3 Lösungen gefunden. Dauer dafür war ca. 1 Minute. Auf einem schnellern Rechner, geht es wohl auch schneller.
Die flex Variante ist wie oben beschrieben mit flexiblen Eingaben zu nutzen (hoffe ich zumindest :-) ).
Zum Code noch: Eigentlich könnte man das Ganze als rekursive Funktion gestalten. Da hatte ich aber vorgestern nicht wirklich Lust drauf. Deshalb ist die Variable für die SChleifen global deklariert und ich ändere sie in den Funktionen / Subs darunter. Ist nicht schön und ggf. unsauber aber war so am schnellsten machbar. Mit viel Lust (die ich gad nicht habe) könnte man es auch rekursiv umschreiben.
Ebenso bei der Variante mit mehreren Ausgaben. Da könnte man die Hauptschleife durch die Zahlen in eine Funktion packen. HAtte ich auch keine Lust zu. Deshalb bin ich da zu der unschönen goto Variante gewechselt. (mache ich sonst nicht).
Einfach mal testen und wie geschrieben, bei Fragen einfach nochmal stellen.
VG
|