8クイーンの問題を解決するために再帰的なバックトラッキングを使用するコードに取り組んでいます(n×nボードにn個のチェスクイーンを配置してお互いを攻撃しないようにします)。 (int型n)は、公共solveQueens書く方法をArray Index Out of Bounds N個のクイーンを解決する際の例外
が指定した列に女王を配置しようとする民間再帰placeQueen(board, column)
方法を書くn×nのボードの問題を解決するために:
私の仕事は、2つのメソッドを作成することでした。
これまでのところ、私は私のプログラムでこれを書いた:
public class Queen {
public static boolean isLegal(int[] board, int n) {
for (int i = 0; i < n; i++) {
if (board[i] == board[n]) {
return false;
}
if ((board[i] - board[n]) == (n - i)) {
return false;
}
if ((board[n] - board[i]) == (n - i)) {
return false;
}
}
return true;
}
public static void solver(int n) {
int[] board = new int[n];
PlaceQueen(board, 0);
}
private static int[] PlaceQueen(int[] board, int column) {
int n = board.length;
if (column == n); else {
for (int row = 0; row < n; row++) {
board[column] = row;
if (isLegal(board, column)) {
PlaceQueen(board, column + 1);
}
}
}
return (board);
}
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
solver(n);
}
}
私のプログラムが正常にコンパイルが、私はそれを実行しようとするたびに、私はこのエラーを取得します。
java.lang.ArrayIndexOutOfBoundsExceptionスレッドの例外 "メイン":0 Queen.mainで (Queen.java:39)
私が得るために、私のコードを編集しなければならない場所へのフィードバック上の任意の提案この例外を取り除く?
java.lang.ArrayIndexOutOfBoundsException
を上昇しますか?プログラムの引数を渡していないようです。 –