Python 算法面试题的一些分享

给定一组数字, 一组有9个数字,将这9个数字填写到33 的九宫格内;使得横,竖,斜对角一条线上的三个数字之和相等;如果无解则打印无解;

参考https://blog.csdn.net/LANGZI7758521/article/details/81542941这位老哥的c语言写法,用Python3再实现一遍

# 时间复杂度为 O(n)
def Nine(input_list=[1, 2, 3, 4, 5, 6, 7, 8, 9]):
    t_array = [[0 for i in range(3)] for j in range(3)]  # 生成空数组 3 * 3

    x, y = 0, 1
    t_array[x][y] = input_list[0]
    k = 1
    while k < 9:
        x_new = x - 1
        y_new = y + 1
        if x_new < 0: x_new = 2
        if y_new > 2: y_new = 0
        if t_array[x_new][y_new] != 0:  # 判定该处是否已尽填充值
            x_new = x + 1
            y_new = y
        t_array[x_new][y_new] = input_list[k]
        x = x_new
        y = y_new
        k += 1
    row1 = t_array[0][0] + t_array[0][1] + t_array[0][2]
    row2 = t_array[1][0] + t_array[1][1] + t_array[1][2]
    row3 = t_array[2][0] + t_array[2][1] + t_array[2][2]
    col1 = t_array[0][0] + t_array[1][0] + t_array[2][0]
    col2 = t_array[0][1] + t_array[1][1] + t_array[2][1]
    col3 = t_array[0][2] + t_array[1][2] + t_array[2][2]
    dig1 = t_array[0][0] + t_array[1][1] + t_array[2][2]
    dig2 = t_array[2][0] + t_array[1][1] + t_array[0][2]
    if row1 == row2 and row1 == row3 and row1 == col1 and row1 == col2 and row1 == col3 and row1 == dig1 and row1 == dig2:
        print(t_array)
    else:
        print("无解!!!")


if __name__ == "__main__":
    input_list = input("请输入列表:")  # 输入九个数字
    """输入格式:1,2,3,4,5,6,7,8,9 """
    input_list = sorted([int(i) for i in input_list.split(",")])  # 将输入转换为列表并正序排列
    Nine(input_list=input_list)  # 有默认值供测试

关于时间复杂度和空间复杂度有懂的老哥可以留言

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值