Ich weiß, es ist eine sehr einfache Frage, und ich bin neu zu programmieren, Es Brüder mich für ein paar Stunden .. Folgendes ist mein Code, ich weiß wirklich nicht warum Grafen doesn; t ändert sich die FunktionWarum der Wert für die Zählung ändert sich nicht
public class Solution {
public int totalNQueens(int n) {
int count =4;
boolean[] col = new boolean[n];
boolean[] dia1 = new boolean[2*n];
boolean[] dia2 = new boolean[2*n];
backtrack(0, col, dia1, dia2,count,n);
return count;
}
private void backtrack(int rownum, boolean[] col, boolean[] dia1, boolean[] dia2, int count,int n){
count =5;
if(rownum==n){
count++;
}else{
for(int i=0; i<n;i++){
int index1 = i-rownum+n;
int index2 = i+rownum;
if(col[i]||dia1[index1]||dia2[index2]) continue;
col[i]=true; dia1[index1]=true; dia2[index2]=true;
backtrack(rownum+1, col,dia1,dia2,count,n);
col[i]=false; dia1[index1]=false; dia2[index2]=false;
}
}
}
}
Vielen Dank für Ihre Erklärung, aber ich verstehe immer noch nicht, warum die Zählung im totalNQueens eine andere Variable ist als die Zählung, die ich am Anfang erklärt habe ... – ztcdsb
Ich denke, ich verstehe nicht genau wo Sie sagen, dass sich der Count nicht ändert. Wenn Sie nur den Rückgabewert von totalNQueens betrachten, sieht es aus, als wäre es wegen des variablen Bereichs immer 4. Oder sagst du, dass sich in "Backtrack" nicht zu 5 oder 6 (die erste Iteration) ändert? Denn woher weißt du das, wenn du nicht gerade einen Debugger durchsuchst oder den Wert irgendwo druckst, dann gibst du uns nicht den ganzen Code. – Fhaab
Ich sage jedoch, dass, egal was Sie an totalNQueens übergeben, es immer 4 zurückgibt. Sie deklarieren eine neue und andere Variable namens "count" in Ihrer Backtrack-Funktion. – Fhaab