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:切割

1386

被折叠的 条评论
为什么被折叠?



