Cod sursa(job #2510811)

Utilizator AndreiStanescuAlloys Nokito AndreiStanescu Data 17 decembrie 2019 15:08:12
Problema Problema Damelor Scor 10
Compilator py Status done
Runda Arhiva educationala Marime 1.27 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
g=open("damesah.out","w")
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:
                        g.write(str(t))
                        g.write(' ')
                    g.write('\n')
        #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)
g.write(str(ans))
g.close()