蓝桥杯赛题——寒假作业

寒假作业

现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:

□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □

(如果显示不出来,可以参见【图1.jpg】)

每个方块代表1~13中的某一个数字,但不能重复。
比如:
6 + 7 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5

以及:
7 + 6 = 13
9 - 8 = 1
3 * 4 = 12
10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)

你一共找到了多少种方案?

思路

将其当做一维数组,前三个代表前三个数字
当前三个不满足加法要求的时候,就退出,以此来减少运行时间
接着三个不满足减法时同样也退出
其他类似

def ad(a, b, k):
    if len(b) >= 3 and b[0] + b[1] != b[2]:
        return k
    elif len(b) >= 6 and b[3] - b[4] != b[5]:
        return k
    elif len(b) >= 9 and b[6] * b[7] != b[8]:
        return k
    elif len(b) == 12 and b[9] != b[10] * b[11]:
        return k
    elif len(b) == 12:
        k += 1

    for i in range(len(a)):
        b.append(a[i])
        d = a.pop(i)
        k = ad(a, b, k)
        a.insert(i, d)
        b.pop(-1)
    return k

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
b = [1]
k = ad(a, b, 0)
print(k)

48

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值