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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值