明明输出一样 怎么6WA+2TLE?
查看原帖
明明输出一样 怎么6WA+2TLE?
750297
chidor楼主2022/8/19 14:18

class s:
    total = 0
    n = 0

    def attack(self, row, col):
        for c, r in self.cols.items():
            if c - r == col - row or c + r == col + row:
                return True
        return False

    def search(self, row):
        if row == self.n:
            self.total += 1
            return

        for col in range(self.n):
            if col in self.cols:
                continue
            if self.attack(row, col):
                continue
            self.cols[col] = row
            self.search(row + 1)
            del self.cols[col]

    def totalNQueens(self, n):
        self.n = n
        self.cols = {}
        self.search(0)
        return self.total
n = int(input())
solution = s()
solution.totalNQueens(n)
a = solution.total
class sol:
    all1 = 0
    def n_queen(self,n):
        self.helper([-1]*n,0,n)
    def helper(self,col,row,n):
        if(row == n):
            self.printer(col,n)
            return
        for i in range(n):
            col[row] = i
            if(self.isv(col,row)):
                self.helper(col,row+1,n)
    def isv(self,col,row):
        for i in range(row):
            if col[i] == col[row]:
                return False
            elif abs(col[i]-col[row]) == row-i:
                return False
        return True
    def printer(self,col,n):
        if(self.all1 == 3):
            print(a)
            exit()
        for row in range(n):
            line = ''
            for i in range(n):
                if col[row] == i:
                    print(i+1,end=' ')
        print()
        self.all1+=1



sol = sol()
sol.n_queen(n)
2022/8/19 14:18
加载中...