Cod sursa(job #2510808)

Utilizator AndreiStanescuAlloys Nokito AndreiStanescu Data 17 decembrie 2019 15:05:55
Problema Problema Damelor Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.19 kb
f=open("damesah.in","r")
n=int(f.read())
f.close()
L=[ [0 for i in range(0,n)] for j in range(0,n)]
ans=0

def verificare_ataca(sol):
    ok=1
    for i in range(0,len(sol)):
        for j in range(0,i):
            if sol[i][0]==sol[j][0] or sol[i][1]==sol[j][1] or abs(sol[i][0]-sol[j][0])==abs(sol[i][1]-sol[j][1]):
                ok=0
                break
    return (ok==1)


def verificare_basic(L):
    sol=[]
    for i in range(0,n):
        for j in range(0,n):
            if L[i][j]==1:
                sol.append((i+1,j+1))
    if len(sol)==n and verificare_ataca(sol)==1:
        ans=[x[1] for x in sol]
        return ans
    return 0

def back(x,y,k):
    global ans
    if y==n:
        y=0
        x+=1
    if x==n and y==0:
        if k==n:
            if verificare_basic(L)!=0:
                rez=verificare_basic(L)
                ans+=1
                if ans==1:
                    for t in rez:
                        print(t,end=' ')
                    print()
        #verific solutia
    else:
        L[x][y]=1
        k+=1
        back(x,y+1,k)
        k-=1
        L[x][y]=0
        back(x,y+1,k)

back(0,0,0)
print(ans,end='')