n=int(input())
hang=[0 for x in range(n)]
lie=[0 for x in range(n)]
d1=[0 for x in range(n2-1)]
d2=[0 for x in range(n2-1)]
count=0
def search(row):
global count
for col in range(n):
if lie[col]==0 and d1[row+col]==0 and d2[row-col+n-1]==0:
hang[row]=col
lie[col]=1
d1[row + col]=1
d2[row - col + n - 1]=1
if row<n-1:
search(row+1)
else:
count+=1
#printf(hang)
lie[col] = 0
d1[row + col] = 0
d2[row - col + n - 1] = 0
search(0)
print(count)
第一幅图中,当row=2,col=3,也就是第三层的第四行,发现条件都不满足的时候。为什么接下来第二幅图会从row=1开始啊?哪一个地方表明程序是这样运作的?不太理解。我知道是回溯,可是不太明白是什么地方导致回溯,是if row<n-1这个地方吗?因为不符合条件所以回溯row变成1了吗?
感谢!