十届蓝桥杯大赛PythonB组--决赛
A递增序列
思路:看到就想起了N皇后问题,感觉有点麻烦 暴力:先统计同一行递增的数量,再统计同一列,最后统计斜对角 发现老是读不懂蓝桥杯的题意,而且就给一个样例,斜对角包括到右下(右下字符比较顺序固定就是从上到下),和到右上(顺序不一样,因为题干给了从左到右和从上到下,发现只要是两个字符不相等,就计数),
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:切割
上一篇:
IDEA上Java项目控制台中文乱码
