蓝桥杯 2016年 搭积木

题目:
第三题:搭积木
题目描述
小明最近喜欢搭数字积木,
一共有10块积木,每个积木上有一个数字,0~9。

搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木。

下面是两种合格的搭法:

0
1 2
3 4 5
6 7 8 9

0
3 1
7 5 2
9 8 6 4

请你计算这样的搭法一共有多少种?

请填表示总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

一个月的复习时间从小白到争取省二,我只能使用暴力法

a=0
count=0
for b in range(1,10):
    for c in range(1,10):
        if b==c:
            continue
        for d in range(1,10):
            if d==b or d==c:
                continue
            for e in range(1,10):
                if e==b or e==c or e==d:
                    continue
                for f in range(1,10):
                    if f==b or f==c or f==d or f==e:
                        continue
                    for g in range(1,10):
                        if g==b or g==c or g==d or g==e or g==f:
                            continue
                        for h in range(1,10):
                            if h==b or h==c or h==d or h==e or h==f or h==g:
                                continue
                            for i in range(1,10):
                                if i==b or i==c or i==d or i==e or i==f or i==g or i==h:
                                    continue
                                for j in range(1,10):
                                    if j==b or j==c or j==d or j==e or j==f or j==g or j==h or j==i:
                                        continue

                                    if (d>b and e>b) and (e>c and f>c) and (g>d and h>d) and (h>e and i>e) and (i>f and j>f):
                                        count+=1

暴力法也是有技巧的,需要将枚举的数量尽可能的减少,由题目可知,
0永远在第一层,所以需要枚举的是 1->9的9次方,即99
这样O(n)=9
9,能进行暴力法,因为是填空题没时间限制,但是,需要排除那些相等的情况,所以如:if c=b: continue这样排除相等情况,
再跟据题目要求,写出

这是我的抽象模型

      a
     b c
    d e f 
   g h i j

读题目要求可知:因为0在第一层,所以 b,c必大于a
所以判断条件成立,计数加一 (d>b and e>b) and (e>c and f>c) and (g>d and h>d) and (h>e and i>e) and (i>f and j>f)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值