pub fn n_queens(n: usize) -> Vec<Vec<usize>>Expand description
N vazir masalasi: n × n shaxmat taxtasiga n ta vazirni bir-birini
urmaydigan qilib joylashning barcha usullari.
Vazir gorizontal, vertikal va diagonal bo’ylab yuradi.
Optimallashtirish: har bir qatorga aynan bitta vazir qo’yiladi, shuning uchun
faqat ustunlar va ikki diagonalni bool massivlarda kuzatib borish yetarli —
tekshiruv O(1).
n = 4 uchun 2 ta yechim:
. Q . . . . Q .
. . . Q Q . . .
Q . . . . . . Q
. . Q . . Q . .Qaytadi: har bir yechim — qator → ustun massivi.
§Misol
use rust_algorithms::other::backtracking::n_queens;
assert_eq!(n_queens(4).len(), 2);
assert_eq!(n_queens(8).len(), 92);
assert_eq!(n_queens(1).len(), 1);
assert_eq!(n_queens(3).len(), 0); // yechim yo'q