计算java中皇后可以从棋盘上特定位置攻击的对角线数时出现运行时错误
我有一个n*n棋盘,其中0没有必要一个接一个地数出方块。女王的位置和计算java中皇后可以从棋盘上特定位置攻击的对角线数时出现运行时错误,java,arrays,2d,chess,Java,Arrays,2d,Chess,我有一个n*n棋盘,其中0没有必要一个接一个地数出方块。女王的位置和n是您需要知道的全部信息 将第0行设为“向上”,第n-1行设为“向下”,第0列设为“左”,第n-1列设为“右”,第rowQ行设为女王, colQ的最大行程为: rowQ行向上 n-rowQ-1向下排 colQ左侧列 n-colQ-1右侧列 对于对角线移动,移动方向上最近的边决定可以到达多少对角线正方形: 在“左上”方向上,使用rowQ或colQ 在“左下”方向,取n-rowQ-1或colQ 在“右上”方向,使用rowQ或n
n
是您需要知道的全部信息
将第0行设为“向上”,第n-1行设为“向下”,第0列设为“左”,第n-1列设为“右”,第rowQ
行设为女王,
colQ
的最大行程为:
rowQ
行向上
n-rowQ-1
向下排
colQ
左侧列
n-colQ-1
右侧列
对于对角线移动,移动方向上最近的边决定可以到达多少对角线正方形:
- 在“左上”方向上,使用
rowQ
或colQ
- 在“左下”方向,取
n-rowQ-1
或colQ
- 在“右上”方向,使用
rowQ
或n-colQ-1
- 在“右下”方向,较小的
n-rowQ-1
ann-colQ-1
将所有四个加起来,您就得到了结果。请共享您的代码,并描述您遇到的错误。该代码不会给出运行时错误。
if(rowQ<n-1 && colQ<n-1) { //n:size of array
int row=rowQ; //rowQ and colQ: row and column
int col=colQ; //of the queen.
while(row<n-1 && col<n-1) { //Capture: number of squares
row++; //queen can visit.
col++;
capture++;
}
}
if(rowQ>0 && colQ>0) {
int row=rowQ;
int col=colQ;
while(row>0 && col>0) {
row--;
col--;
capture++;
}
}
if(rowQ>0 && colQ<n-1){
int row = rowQ;
int col = colQ;
while(row>0 && col < n-1){
row--;
col++;
capture++;
}
}
if(rowQ<n-1 && colQ>0){
int row = rowQ;
int col = colQ;
while(row<n-1 && col >0){
row++;
col--;
capture++;
}
}