-1
我正在解決8 queen問題,並試圖通過互聯網查看比較解決方案,以瞭解我的解決方案與其他解決方案的比較。我發現一個非常小的暴力解決方案讓我感到困惑。我想知道是否有人關心解釋對角線比較實際上是如何工作的?瞭解8皇后拼圖的對角線搜索
void solve(int n, int col, int *hist)
{
int i;
int j;
if (col == n)
{
print_solution(n, hist);
}
i = 0;
while (i < n)
{
j = 0;
while (j < col && !(hist[j] == i || abs(hist[j] - i) == col - j))
j++;
if (j < col)
{
i++;
continue;
}
hist[col] = i;
solve(n, col + 1, hist);
i++;
}
}
void main(void)
{
int hist[8];
solve(8, 0, hist);
}
特別I have
問題可視化的代碼是:
abs(hist[j] - i) == col - j)
從我明白了什麼叫檢查對角線,但我沒有看到它。
用筆和紙手工穿過它。 (這是我必須做的,以解釋給你,所以你也可以這樣做。) –
@meowgoesthedog它通過主傳遞。 int hist [8]例如一個歷史緩衝區。 –
@PaulOgilvie我試過了,數字對我沒有意義。 –