Solving N-Queens Problem… How far can we go?

后端 未结 9 975
闹比i
闹比i 2020-12-09 03:23

The N-Queens Problem:

This problem states that given a chess board of size N by N, find the different permutations in which N queens can be placed on the board with

9条回答
  •  难免孤独
    2020-12-09 03:58

    If you only want 1 solution then it can be found greedily in linear time O(N). My code in python:

    import numpy as np
    
    n = int(raw_input("Enter n: "))
    
    rs = np.zeros(n,dtype=np.int64)
    board=np.zeros((n,n),dtype=np.int64)
    
    k=0
    
    if n%6==2 :
    
        for i in range(2,n+1,2) :
            #print i,
            rs[k]=i-1
            k+=1
    
        rs[k]=3-1
        k+=1
        rs[k]=1-1
        k+=1
    
        for i in range(7,n+1,2) :
            rs[k]=i-1
            k+=1
    
        rs[k]=5-1
    
    elif n%6==3 :
    
        rs[k]=4-1
        k+=1
    
        for i in range(6,n+1,2) :
            rs[k]=i-1
            k+=1
    
        rs[k]=2-1
        k+=1
    
        for i in range(5,n+1,2) :
    
            rs[k]=i-1
            k+=1
    
        rs[k]=1-1
        k+=1
        rs[k]=3-1
    
    else :
    
        for i in range(2,n+1,2) :
    
            rs[k]=i-1
            k+=1
    
        for i in range(1,n+1,2) :
    
            rs[k]=i-1
            k+=1
    
    for i in range(n) :
        board[rs[i]][i]=1
    
    print "\n"
    
    for i in range(n) :
    
        for j in range(n) :
    
            print board[i][j],
    
        print
    

    Here, however printing takes O(N^2) time and also python being a slower language any one can try implementing it in other languages like C/C++ or Java. But even with python it will get the first solution for n=1000 within 1 or 2 seconds.

提交回复
热议问题