Advertisement
alex0sunny

queens

Oct 21st, 2022 (edited)
946
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.60 KB | None | 0 0
  1. def dfs(cols, diags, rdiags, queens, y, n, res):
  2.     if y == n:
  3.         res.append(queens[:])
  4.         return
  5.     for x in range(n):
  6.         if cols & 1 << x == diags & 1 << (n + x - y) == rdiags & 1 << (x + y) == 0:
  7.             queens[y] = x + 1
  8.             dfs(cols|1<<x, diags|1<<(n+x-y), rdiags|1<<(x+y), queens, y + 1, n, res)
  9.  
  10.  
  11. def get_combs(n):
  12.     cols = diags = rdiags = 0
  13.     queens = [0] * n
  14.     res = []
  15.     dfs(cols, diags, rdiags, queens, 0, n, res)
  16.     return res
  17.  
  18.  
  19. n = int(input())
  20. res = get_combs(n)
  21. print(len(res))
  22. for queens in res:
  23.     print(' '.join([str(x) for x in queens]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement