magisches quadrad
-
Hallo,
ich weiß zwar nicht, ob ich in diesem forum richtig bin, aber in die anderen passt es auch irgendwie nicht rein. deshalb probier ich mein gläck mal hier.
ich versuche ein programm zu schreiben, mit dem es möglich sein soll alle möglichen kombinationen eines magischen quadrades (4x4 Felder) zu testen. ich will kein prog schreiben, das die lösung berechnet, es soll nur "probiert" werden.
ich habe jetzt ein prog geschrieben, dass die lösung als eine 16 stellige hexadezimalzahl betrachte, die einfach hochgezählt wird. das dauert aber viiiiiieeeeeeeeellllllll zu lang. es muss irgendwie möglich sein falsche kombinationen (wie z.b. 1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1, denn jede ziffer darf ja nur einmal vorkommen) auszuschließen.kann mir jemand dabei helfen?
-
Das gehört meiner Meinung nach nach "Rund um", da es sich um ein logisches, kein programmiertechnisches Problem handelt.
-
Wenn sicher ist, dass die Zahlen von 1 bis 16 gehen dürfte es so in der Art gehen :xmas1: .
bool checkMagicSquare(unsigned char square[16]) { int counter[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; for(int i = 0; i < 16; ++i) if(square[i] < 0 || square[i] >= 16 || ++counter[square[i]] > 1) return false; return true; }
-
Dein Problem mit der Rechengeschwindigekeit liegt daran, dass es
16! = 20.922.789.888.000 Permutationen (bzw. Möglichkeiten) gibt, deine Zahlen
anzuordnen - und das sind dann doch ein Paar
-
Taurin schrieb:
Dein Problem mit der Rechengeschwindigekeit liegt daran, dass es
16! = 20.922.789.888.000 Permutationen (bzw. Möglichkeiten) gibt, deine Zahlen
anzuordnen - und das sind dann doch ein Paarjau.
so ein fetter suchbaum läßt sich oft drastisch beschneiden. siehe offizielle lösung zum 8-damen-problem und unter suchwort "backtracking".
(ist sich reines programmierproblem, aber kein c++)
-
rund um dir programmierung
-
hallo.
hab ein ähnliches problem, nur das es sich hier um 64!(ist zumindest meine starke vermutung) handelt: http://www.heise.de/tp/deutsch/kunst/rate/2003/quest/7/b.html
falls irgendjemand tips zur optimierung des algorithmus hat - nur her damit...