Magic square

valentina2013

Bekanntes Mitglied
Hallo,

ich muss eine rekursive Methode schreiben
Java:
void backtrack(nt i,int j,int k)
die alle magischen Quadrate für gegebene Kantenlänge N berechnet. Dabe bezeichnen i und j die Feldindizes des Quadrats und k die potentielle Belegung des Feldes
Java:
numbers[i][j]
.Da keine Zahl k doppelt vorkommen darf,muss man einen Lösungskandidat verwerfen, sobald eine bereits verwendete Zahl ein zweites mal benutzt wird. Diese Information wird in Boolean-Array
Java:
boolean usedNumber[]
vermerkt. Eine potentiell zulässige und vollständige Lösung wird geprüft wenn man in der unteren rechten Ecke des Quadrats ankommt-So die Aufgabenstellung.

Also:Ich habe auch andere Metoden:
1.
Java:
showSquare()
die den Quadrat ausgibt.
2.
Java:
boolean canBeMagic(int I,int J)
die entscheidet ob ein quadrat magisch ist(prüft die Summen der Zeilen,Spalten,Haupt und nebendiagonalen, die dürfen nicht voneinander abeichen);
3.Und noch die
Java:
void backtrack(nt i,int j,int k)
die ich nicht hinbekomme:
Java:
static void backtrack(int i, int j, int k) {

		if (usedNumber[k])
			return;
		numbers[i][j] = k + 1;
		 usedNumber[k] = true;
   
    		int a=i; //hier ist vieles falsch :(
    		if(a==N)
    			return;
    			for(int b=j; b<N;b++){
    			numbers[a][b]=k+1;
    			}
    			if(canBeMagic(i,j)){
    				showSquare();
    				i++;
    				
    			}else{
    				i++;
    				backtrack(i,j,k);
    			}
    		
		usedNumber[k] = false;
	}

	public static void main(String args[]) {

		N = reader.nextInt();
		numbers = new int[N][N];
		usedNumber = new boolean[N * N];

		int solutionCount[] = { 0, 1, 0, 8, 7040 };
		

		for (int k = 0; k < N * N; k++) {
		backtrack(0, 0, k);
		}

		System.out.println("correct solution count: "
				+ (solutionCount[N] == solutionID));

	}
}
Ich bitte euch um hilfe wie kann ich die methode vervollständigen?
LG
 

Ähnliche Java Themen

Neue Themen


Oben