Two Dimensional int数组打印值行而不是一行

时间:2017-05-19 21:24:25

标签: java arrays command-line int backtracking

所以我有一个给定大小的二维int数组。我想将值1赋给此数组中的特定位置。我正在使用另一个数组的输出值。像这样的东西:

 public void printQueens(){
   int k = queens[0];
   board[1][queens[0]] = 1;
   System.out.print(queens[1]);}

k值用于确保它是一个整数值。女王的数组是给定大小的一维整数数组。例如。 {6,7,2,4}

queens = new int[NUM_QUEEN];

它是以bactracking方法创建的:

public void backtrack(int row){

    for(int i = 0; i<BOARD_SIZE; i++){
        if(canPlace(row,i)){
            queens[row] = i;
            if(row == NUM_QUEEN-1){
                printQueens();               
            }
            else{
                backtrack(row+1);
            }

        }
    }
}

我期望的输出是第1行和皇后[0]列中的一个(在本例中为7)。输出是第一行中的一行:

  0 0 0 0 0 0 0 0
  1 1 1 1 1 1 1 1
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0

如果我说,7,而不是皇后[0]输出是正确的:

  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 1 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0

所以我的问题是为什么会发生这种情况?如果常规显式整数有效,为什么隐式整数不是?

2 个答案:

答案 0 :(得分:1)

嗯......我试图了解你的问题。这是代码的建议,可以做你想要的(如果我理解了这个问题)。

public static void main(String[] args) {

    int boardSize = 8;
    int queens[]  = {6, 7, 2, 4};

    int board[][] =   {{0, 0, 0, 0 , 0, 0, 0, 0},
                       {0, 0, 0, 0 , 0, 0, 0, 0},
                       {0, 0, 0, 0 , 0, 0, 0, 0},
                       {0, 0, 0, 0 , 0, 0, 0, 0},
                       {0, 0, 0, 0 , 0, 0, 0, 0},
                       {0, 0, 0, 0 , 0, 0, 0, 0},
                       {0, 0, 0, 0 , 0, 0, 0, 0},
                       {0, 0, 0, 0 , 0, 0, 0, 0}};

    int k = queens[0];
    board[1][k] = 1;

    for (int row = 0; row < boardSize; row++) {
        for (int col = 0; col < boardSize; col++) {
            System.out.print(board[row][col] + " ");
        }
        System.out.println();
    }
}

输出

0 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 

答案 1 :(得分:0)

女王的阵列从未被重置过。因此,当我使用皇后数组时,由于递归,它只是将每个值叠加在一起。