import time
count = 0
n = 8
G = [] # the whole graph
r = [] # each row's status
bl = [] # bottom left to top right
br = [] # bottom right to top left
def init():
global n
n = int(input("Enter size of the chessboard : "))
for i in range(n):
r.append(0)
G.append([])
for j in range(n):
G[i].append(0)
for i in range(2*n+5):
bl.append(0)
br.append(0)
def is_legal(row, col):
return G[row][col] + r[row] + bl[row+col] + br[row-col+n-1] == 0
def print_matrix():
global count
count += 1
print("Solution : {}".format(count))
for i in range(n):
for j in range(n):
print(G[i][j], end=" ")
print("")
def set_queen(row, col):
G[row][col] = 1
r[row] = 1
bl[col+row] = 1
br[n-1+row-col] = 1
def remove_queen(row, col):
G[row][col] = 0
r[row] = 0
bl[col+row] = 0
br[n-1+row-col] = 0
def dfs(col=0):
if col >= n:
print_matrix()
return
for row in range(n):
if is_legal(row, col):
set_queen(row, col)
dfs(col+1)
remove_queen(row, col)
def time_calculate():
begin = time.perf_counter()
main()
end = time.perf_counter()
return end - begin
def main():
init()
dfs()
if __name__ == "__main__":
print("".join(["Time consumption = ", str(time_calculate()), " seconds"]))