在4×4的空格中填上1234四个数字

问题:在4×4的空格中填上1,2,3,4四个数字,使得每行每列数字不重复,把所有结果显示出来。
本人小白一个枚,自学python,刚好想到了这个以前觉得头疼的题,就自己写了代码试试,但是感觉不怎么好,希望大神能帮我看看怎么优化比较好
例如:
[3, 1, 4, 2]
[2, 4, 3, 1]
[1, 3, 2, 4]
[4, 2, 1, 3]
下面是代码:

from addict import Dict
n, m = [1,2,3,4], []
w = Dict()
for i in range(4):
    for j in range(3):
        nl = [1,2,3,4]
        del nl[i]
        for k in range(2):
            nll = [1,2,3,4]
            nlll = [1,2,3,4]
            del nll[i]
            del nll[j]
            del nlll[i]
            del nlll[j]
            del nlll[k]
            w[n[i]][nl[j]][nll[k]] = nlll[0]
            m.append([n[i],nl[j],nll[k],nlll[0]])
w = dict(w)
p = 0
for a in m:
    for b in m:
        if b[0] in w[a[0]] and b[1] in w[a[1]] and b[2] in w[a[2]] and b[3] in w[a[3]]:
            for c in m:
                if c[0] in w[a[0]][b[0]] and c[1] in w[a[1]][b[1]] and c[2] in w[a[2]][b[2]] and c[3] in w[a[3]][b[3]]:
                    d = [w[a[0]][b[0]][c[0]],w[a[1]][b[1]][c[1]],w[a[2]][b[2]][c[2]],w[a[3]][b[3]][c[3]],]
                    e = [a,b,c,d]
                    p += 1
                    print(p,':',e)
                    print('****************************')

能力有限,只能想到这种方法,希望大神能指点一下,拜托

可以用回溯法, 没想到输出来的结果这么多个

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632