社区讨论
【PY3】最后三个点TLE,我谔谔,有没有佬教教剪枝,呜呜呜。
P1219[USACO1.5] 八皇后 Checker Challenge参与者 4已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @locmhcei
- 此快照首次捕获于
- 2023/10/30 16:12 2 年前
- 此快照最后确认于
- 2023/11/05 03:18 2 年前
PYTHON
#来了,是八皇后!
k = int(input())
bloc = []
bloc = [0 for i in range(k)]
table = [bloc[:] for i in range(k)]
#记录下答案
answer_number = 0
#代码重构times:5
#检查某个格子是否可以合法放置
def check(matrix,x,y):
for i in range(k):
if matrix[i][y] == 1: return False
i, j = x-1, y-1
while i>= 0 and j>=0:
if matrix[i][j] == 1: return False
i-=1
j-=1
i,j = x-1,y+1
while i>=0 and j<k:
if matrix[i][j] == 1: return False
i-=1
j+=1
return True
#DFS函数
def DFS(row):
if row == k :
global answer_number
answer_number+=1
if answer_number < 4:
for i in range(k):
for j in range(k):
if table[i][j] == 1: print(j+1,end = ' ')
print()
return
for i in range(k):
if check(table,row,i):
table[row][i] = 1
DFS(row+1)
table[row][i] = 0
DFS(0)
print(answer_number)
回复
共 5 条回复,欢迎继续交流。
正在加载回复...