aiuto algoritmo quadrato magico vincolato in java

Pubblicità

seymour_90

Utente Attivo
Messaggi
5
Reazioni
2
Punteggio
26
Salve ho bisogno di aiuto nel risolvere un problema in java ma mi basta anche solo l'algoritmo risolutivo o qualche dritta.
E' una variante del classico problema del quadrato magico:

wiki
Si consideri una matrice quadrata n*n contenente numeri interi. Si vuole trovare (se esiste) una disposizione dei valori da 1 a n quadro nella matrice in modo tale che la somma dei numeri presenti su ogni riga, su ogni colonna e sulle due diagonali sia sempre la stessa.

Devo costruire un quadrato magico ma nel mio caso la matrice iniziale non è vuota ma ha k>=0 celle vincolate già date.
Esempio: Si consideri il problema del quadrato magico vincolato con n=3
e k=2, con a0 = 6 e a1 = 5 e con la seguente matrice iniziale:
0 0 6
0 5 0
0 0 0
nella quale vengono fissate le celle per i valori 5 e 6, una possibile soluzione
e' :
2 7 [6]
9 [5] 1
4 3 8
In questo caso è stato necessario disporre solamente i numeri non vincolati e
cioé [1; 2; 3; 4; 7; 8; 9]

Qualche idea? Grazie in anticipo.
 
Nessuno mi può aiutare? Uff...

EDIT: oggi ci ho ragionato un po' e credo che l'unica soluzione sia un brute force provando tutte le permutazioni possibili della matrice NxN e controllando ad ogni matrice permutata se sia un quadrato magico. Ora il problema è "come si fanno le permutazioni di una matrice con k celle vincolate?"...
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top