leetcode 51 -N皇后

最近科研没头绪,写写leetcode缓缓,主要学python了,之前python只是看别人的代码,还没自己写过,果然不同

N皇后也算经典题目了,写的时候倒也没那么顺利,没搞懂列表和普通变量复制的区别,也算加深印象了

皇后1

class Solution(object):
    def solveNQueens(self, n):
    Nqunens=[]
    def fd(m,l):
    if m==n:
    nq=[]
    for i in range(n):
    s=""
    for j in range(n):
    if l[i]==j:
    s=s+"Q"
    else:
    s=s+"."
    nq.append(s)
    Nqunens.append(nq)
    else:
    for i in range(n):
    if isok(i,l)==True:
    nl=l[:]
    nl.append(i)
    fd(m+1,nl)




    def isok(a,l):
    for i in range(len(l)):
    if l[i]==a:
    return False
    if len(l)-i==a-l[i] or l[i]-a==len(l)-i:
    return False
    return True
    nnl=[]
    fd(0,nnl)
    return Nqunens

皇后2

class Solution(object):
    def totalNQueens(self, n):
    def fd(m,l):
    if m==n:
    return 1
    else:
    sum=0
    for i in range(n):
    if isok(i,l)==True:
    nl=l[:]
    nl.append(i)
    sum+=fd(m+1,nl)
    return sum




    def isok(a,l):
    for i in range(len(l)):
    if l[i]==a:
    return False
    if len(l)-i==a-l[i] or l[i]-a==len(l)-i:
    return False
    return True
    nnl=[]
    return fd(0,nnl)

猜你喜欢

转载自blog.csdn.net/a1310368974/article/details/78107634
今日推荐