第十届蓝桥杯大赛PythonB组--决赛

小白做不决赛告辞

A递增序列

在这里插入图片描述

VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG
SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF
ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA
BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL
YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH
ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU
XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR
ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG
MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA
VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF
GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC
EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK
PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW
CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP
RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS
PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR
JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL
YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP
HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN
DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF
LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW
CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ
IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI
ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB
HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP
FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS
VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ
BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR
RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY
ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX

思路:看到就想起了N皇后问题,感觉有点麻烦
暴力:先统计同一行递增的数量,再统计同一列,最后统计斜对角
发现老是读不懂蓝桥杯的题意,而且就给一个样例,斜对角包括到右下(右下字符比较顺序固定就是从上到下),和到右上(顺序不一样,因为题干给了从左到右和从上到下,发现只要是两个字符不相等,就计数),

li=[]
s=list("VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG")
li.append(s[:])
s=list("SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASATDWZAPZRNHTNNGQF")
li.append(s[:])
s=list("ZGUGXVQDQAEAHOQEADMWWXFBXECKAVIGPTKTTQFWSWPKRPSMGA")
li.append(s[:])
s=list("BDGMGYHAOPPRRHKYZCMFZEDELCALTBSWNTAODXYVHQNDASUFRL")
li.append(s[:])
s=list("YVYWQZUTEPFSFXLTZBMBQETXGXFUEBHGMJKBPNIHMYOELYZIKH")
li.append(s[:])
s=list("ZYZHSLTCGNANNXTUJGBYKUOJMGOGRDPKEUGVHNZJZHDUNRERBU")
li.append(s[:])

s=list("XFPTZKTPVQPJEMBHNTUBSMIYEGXNWQSBZMHMDRZZMJPZQTCWLR")
li.append(s[:])

s=list("ZNXOKBITTPSHEXWHZXFLWEMPZTBVNKNYSHCIQRIKQHFRAYWOPG")
li.append(s[:])

s=list("MHJKFYYBQSDPOVJICWWGGCOZSBGLSOXOFDAADZYEOBKDDTMQPA")
li.append(s[:])
s=list("VIDPIGELBYMEVQLASLQRUKMXSEWGHRSFVXOMHSJWWXHIBCGVIF")
li.append(s[:])

s=list("GWRFRFLHAMYWYZOIQODBIHHRIIMWJWJGYPFAHZZWJKRGOISUJC")
li.append(s[:])

s=list("EKQKKPNEYCBWOQHTYFHHQZRLFNDOVXTWASSQWXKBIVTKTUIASK")
li.append(s[:])
s=list("PEKNJFIVBKOZUEPPHIWLUBFUDWPIDRJKAZVJKPBRHCRMGNMFWW")
li.append(s[:])

s=list("CGZAXHXPDELTACGUWBXWNNZNDQYYCIQRJCULIEBQBLLMJEUSZP")
li.append(s[:])
s=list("RWHHQMBIJWTQPUFNAESPZHAQARNIDUCRYQAZMNVRVZUJOZUDGS")
li.append(s[:])

s=list("PFGAYBDEECHUXFUZIKAXYDFWJNSAOPJYWUIEJSCORRBVQHCHMR")
li.append(s[:])
s=list("JNVIPVEMQSHCCAXMWEFSYIGFPIXNIDXOTXTNBCHSHUZGKXFECL")
li.append(s[:])
s=list("YZBAIIOTWLREPZISBGJLQDALKZUKEQMKLDIPXJEPENEIPWFDLP")
li.append(s[:])

s=list("HBQKWJFLSEXVILKYPNSWUZLDCRTAYUUPEITQJEITZRQMMAQNLN")
li.append(s[:])
s=list("DQDJGOWMBFKAIGWEAJOISPFPLULIWVVALLIIHBGEZLGRHRCKGF")
li.append(s[:])
s=list("LXYPCVPNUKSWCCGXEYTEBAWRLWDWNHHNNNWQNIIBUCGUJYMRYW")
li.append(s[:])

s=list("CZDKISKUSBPFHVGSAVJBDMNPSDKFRXVVPLVAQUGVUJEXSZFGFQ")
li.append(s[:])

s=list("IYIJGISUANRAXTGQLAVFMQTICKQAHLEBGHAVOVVPEXIMLFWIYI")
li.append(s[:])

s=list("ZIIFSOPCMAWCBPKWZBUQPQLGSNIBFADUUJJHPAIUVVNWNWKDZB")
li.append(s[:])
s=list("HGTEEIISFGIUEUOWXVTPJDVACYQYFQUCXOXOSSMXLZDQESHXKP")
li.append(s[:])
s=list("FEBZHJAGIFGXSMRDKGONGELOALLSYDVILRWAPXXBPOOSWZNEAS")
li.append(s[:])
s=list("VJGMAOFLGYIFLJTEKDNIWHJAABCASFMAKIENSYIZZSLRSUIPCJ")
li.append(s[:])

s=list("BMQGMPDRCPGWKTPLOTAINXZAAJWCPUJHPOUYWNWHZAKCDMZDSR")
li.append(s[:])
s=list("RRARTVHZYYCEDXJQNQAINQVDJCZCZLCQWQQIKUYMYMOVMNCBVY")
li.append(s[:])
s=list("ABTCRRUXVGYLZILFLOFYVWFFBZNFWDZOADRDCLIRFKBFBHMAXX")
li.append(s[:])

print(li)
hang=len(li)
lie=len(li[0])
#同一行
count = 0
for i in range(hang):
    for j in range(lie-1):
        for m in range(j+1,lie):
            if li[i][j]<li[i][m]:
##                print(i,li[i][j],li[i][m])
                count+=1
#同一列
for i in range(lie):
    for j in range(hang-1):
        for n in range(j+1,hang):
            if li[j][i]<li[n][i]:
##                print(li[j][i],li[n][i])
                count+=1
#45,从上到下
for i in range(hang-1):
    for j in range(lie-1):
        m,n=i+1,j+1
        while( m<hang) and (n <lie):
            if li[i][j]<li[m][n]:
##                print(li[i][j],li[m][n])
                count+=1
            m,n=m+1,n+1
#从左到右
for i in range(1,hang):
    for j in range(lie-1):
        m,n=i-1,j+1
        while(0<=m) and (n<lie):
            if li[i][j]!=li[m][n]:
##                print(li[i][j],li[m][n])
                count+=1
            m,n=m-1,n+1
print(count)

在这里插入图片描述

B:平方拆分

在这里插入图片描述

暴力:三个数字按递增的顺序
太难了,感觉会超时
后来发现题目没有规定数字的个数,下面的代码是看了别人的思路,采用回溯的思想

#回溯,dp[i]=(i-1)^2
dp=[1,4,9,16,25,36,49,64,81,100,121,169,196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900,961,1024,1089,1156,1225,1296,1369,1444,1521,1600,1681,1764,1849,1936,2025,2116]
lenn=45
ans = []#存放所有方法
path=[]#存放一个方法
def backtracking(dp,begin):#有个begin参数,使数字不重复
    if sum(path)==2019:#成立
        ans.append(sum)
        return
    if sum(path)>2019:#当一条路径的和大于2019说明这条路径不成立
        return
    #每个数不同,我们按递增的顺序
    for i in range(begin,lenn):
        path.append(dp[i])
        backtracking(dp,i+1)
        path.pop()
backtracking(dp,0)
print(len(ans))        
        

在这里插入图片描述

C:切割

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值