Skip to main content

n_queens

Function n_queens 

Source
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