自学编程Python日更成长营

自学Python:求解填表格的所有方法

2022-04-06  本文已影响0人  小强聊成长

将1, 3, 5, 7, 9, 15填入下表中,要求每一列右边的数字比左边的数字大且每一行下面的数字比上面的数字大。

下面问题来了。请编程求出共有几种填写方法?

下面直接上代码:

########################

def tiankong(b):# 判断a[1]~a[4]的取值

    for i in range(1, 4):

        l = i + 1

        while l < 5:

            if (b[l] == b[i]):

                # 判断a[1]~a[4]的取值是否有重复,若有重复则返回False

                return False

            l += 1

    return True  # 若a[1]~a[4]的取值各不相同,则返回True

if __name__ == '__main__':

    count = 1 # 计数器

    a = [1, 3, 5, 7, 9, 15]  # 初始化列表

    print("满足条件的结果为:")

    a[1] = a[0] + 1

    while a[1] <= 5:  # a[1]必须大于a[0]

        a[2] = a[1] + 1

        while a[2] <= 5:  # a[2]必须大于a[1]

            a[3] = a[0] + 1

            while a[3] <= 5:  # 第二行的a[3]必须大于a[0]

                # 第二行的a[4]必须大于左侧的a[3]和上边的a[1]

                if a[1] > a[3]:

                    a[4] = a[1] + 1

                else:

                    a[4] = a[3] + 1

                while a[4] <= 5:

                    if tiankong(a):  # 如果满足题意,则打印结果

                        print("结果%d:" % count)

                        count += 1

                        print(a[:3])

                        print(a[3:])

                        print()

                    a[4] += 1

                a[3] += 1

            a[2] += 1

        a[1] += 1

########################

执行结果如下:

满足条件的结果为:

结果1:

[1, 2, 3]

[4, 5, 15]

结果2:

[1, 2, 4]

[3, 5, 15]

结果3:

[1, 2, 5]

[3, 4, 15]

结果4:

[1, 3, 4]

[2, 5, 15]

结果5:

[1, 3, 5]

[2, 4, 15]

________________END______________

上一篇下一篇

猜你喜欢

热点阅读