[每日一题]10、一道关于九宫格的面试题

这是一道关于九宫格填数的面试题,要求使用1到9的数字填充3x3的表格,确保每一行、每一列和两条对角线的数字和都相等。通过计算每行和应为15,找出所有三位数和为15的组合,然后遍历这些组合找到没有重复数字且满足条件的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方Python3X”,选择“置顶或者星标

第一时间收到精彩推送!


Python Every Day, 第 10 天



题目:


有1~9个数字,将他们填入九宫格中(即3*3的表格)。要求他们每行、每列以及对角线的和相等。数字不可以重复。


如图所示

640?wx_fmt=png


思路:


每行的和相等,而1 + 2 + 3 + .. + 9 = 45。说明每行的和为45/3 = 15。


所以我们只需要找出所有三位数之和为15的组合。再从里面找出符合要求的。即:9位数不能有重复,且横、纵、斜之和相等的。



解:


step1、求出所有三位数相加为15的组合。


 
 
arr = []for i in range(1, 10):    for j in range(1, 10):        for m in range(1, 10):            # 三个数相加等于15,并且三个数不重复,将他们放入列表中            if i + j + m == 15 and len({i, j, m}) == 3:                arr.append([i, j, m])for i in range(110):
    for j in range(110):
        for m in range(110):
            # 三个数相加等于15,并且三个数不重复,将他们放入列表中
            if i + j + m == 15 and len({i, j, m}) == 3:
                arr.append([i, j, m])


最后得出的组合有以下几种:


 
 
[    [1, 5, 9],[1, 6, 8],[1, 8, 6],[1, 9, 5],    [2, 4, 9],[2, 5, 8],[2, 6, 7],[2, 7, 6],    [2, 8, 5],[2, 9, 4],[3, 4, 8],[3, 5, 7],    [3, 7, 5],[3, 8, 4],[4, 2, 9],[4, 3, 8],    [4, 5, 6],[4, 6, 5],[4, 8, 3],[4, 9, 2],    [5, 1, 9],[5, 2, 8],[5, 3, 7],[5, 4, 6],    [5, 6, 4],[5, 7, 3],[5, 8, 2],[5, 9, 1],    [6, 1, 8],[6, 2, 7],[6, 4, 5],[6, 5, 4],    [6, 7, 2],[6, 8, 1],[7, 2, 6],[7, 3, 5],    [7, 5, 3],[7, 6, 2],[8, 1, 6],[8, 2, 5],    [8, 3, 4],[8, 4, 3],[8, 5, 2],[8, 6, 1],    [9, 1, 5],[9, 2, 4],[9, 4, 2],[9, 5, 1]]159],[168],[1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值