【发布时间】:2017-05-19 21:24:24
【问题描述】:
所以我有一个给定大小的二维 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];
它是在反向跟踪方法中创建的:
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);
}
}
}
}
我期望的输出是第一行和皇后[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 放入而不是 Queens[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
所以我的问题是为什么会这样?如果常规显式整数有效,为什么隐式整数无效?
【问题讨论】:
-
board[1][k] = 1;不可能更新整行。请发帖minimal reproducible example。 -
不太确定我还能如何验证。也许是截图?
-
不,请不要。只需包含重现问题所需的最少代码。有关详细信息,请参阅上面的链接。
-
我刚刚进行了编辑,试图进一步解释皇后的来源。希望这会有所帮助,我知道它看起来很模糊。感谢您的建议
-
"k 值是为了确保它是一个整数值。" “它”还有什么其他价值? “它”的先行词是什么?
标签: java arrays command-line int backtracking