Python搜索学习

P1219 [USACO1.5] 八皇后 Checker Challenge

Problem

学了一个 global 定义,是要在函数里面进行申明的,在外面申明会报错,idk why?

上代码:

lie=[0]*100
xie=[0]*100
now=[0]*100
tot=0
def dfs(x):
    global tot
    if x>n:
        tot+=1
        if tot<=3:
            for i in range(1,n+1):
                print(now[i],end=" ")
            print()
        return
    for i in range(1,n+1):
        if(lie[i]==0 and xie[x-i+50]==0 and xie[x+i]==0):
            lie[i]=1
            xie[x-i+50]=1
            xie[x+i]=1
            now[x]=i
            dfs(x+1)
            lie[i]=0
            xie[x-i+50]=0
            xie[x+i]=0       
    return
n=int(input())
dfs(1)
print(tot)   

马蜂较丑陋~~

posted @ 2024-12-20 18:36  raiterlin  阅读(28)  评论(0)    收藏  举报