这是关于8个皇后的问题,而我没有得到这部分代码。你能解释一下吗?
我不知道如何在此代码上检测冲突?
什么是dp?
// Count the number or row collisions
var rowCollisions = function (a) {
collision = 0;
for (var i in a) {
for (var j in a) {
if (j != i) {
collision = a[i] == a[j] ? collision+1 : collision;
}
}
}
return collision;
};
// Count the number of column collisions
var diaCollisions = function (a) {
collision = 0;
for (var i in a){
for (var j in a){
if (i != j) {
dp = Math.abs(i-j);
collision = a[i] == a[j]+dp ? collision+1 : collision;
collision = a[i] == a[j]-dp ? collision+1 : collision;
}
}
}
return collision / 2;
};
最佳答案
让我们看看对角线碰撞的皇后:
👸 [0, 0]
👸 [1, 1]
👸 [2, 0]
这里有两个不会冲突的:
👸 [0, 0]
👸[1, 2]
因此,如果查看碰撞后的皇后位置([1,1],[-1、1])和非碰撞后的皇后位置([1,2])之间的差异,则可以看到,如果x的差异导致队列冲突y等于(忽略符号)。我们可以将其放入公式中:
const collide = Math.abs(queen1.x - queen2.x) === queen1.y - queen2.y;
现在,如果将
queen1.x
替换为i
,将queen2.x
替换为j
,并将.y
坐标替换为a[...]
,则基本上已经有了代码。关于javascript - 8皇后问题。此JavaScript代码如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60840580/