【发布时间】:2019-04-12 15:54:50
【问题描述】:
解决 8 个皇后的问题我实际上陷入了在放置皇后时如何访问特定单元格的对角线以将其设置为 1 的问题。对于必须放置女王的选定单元格的垂直或水平单元格有简单的逻辑。
这是我的函数代码,用于将女王的单元格设置为 1,女王可以攻击。
static int[][] SetPos(int csp[][],int row,int col){
int count = 0, n = csp.length;
for (int i = 0; i < csp.length; i++) {
for (int j = 0; j < csp.length; j++) {
if(i==row || j==col){
csp[i][j]=1;
}
if(row==col && i==j){
//csp[row][col]=1;
csp[i][j]=1;
}
if(row+count==i && col+count==j){
csp[i][j]=1;
}
}
count++;
}
return csp;
}
如何改善这种情况:
if(row+count==i && col+count==j){
csp[i][j]=1;
}
所以我得到单元格(5,5)的结果为:
1 0 0 0 0 1 0 0
0 1 0 0 0 1 0 0
0 0 1 0 0 1 0 0
0 0 0 1 0 1 0 1
0 0 0 0 1 1 1 0
1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 0
0 0 0 1 0 1 0 1
不是这样的:
1 0 0 0 0 1 0 0
0 1 0 0 0 1 0 0
0 0 1 0 0 1 0 0
0 0 0 1 0 1 0 0
0 0 0 0 1 1 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 0
0 0 0 0 0 1 0 1
回溯现在不是问题。
【问题讨论】:
标签: java arrays if-statement matrix logic