2022 8 21
***001:https://www.lanqiao.cn/problems/505/submissions/630183dc3065690009b61070/
过一周复习这个再详细解答。
h = int(input()) # 输入数据 W = [list(map(int, input().split())) for i in range(h)] # 循环遍历计算到每一行的和的最大值 for i in range(1, h): for j in range(0, i + 1): if j == 0: # 最左边元素只能由右上方得到 W[i][j] += W[i - 1][j] elif j == i: # 最右边元素只能由左上方得到 W[i][j] += W[i - 1][j - 1] else: # 其余元素由上方较大值得到 W[i][j] += max(W[i - 1][j - 1: j + 1]) if h & 1: # 如果是奇数行,则返回最中间值 print(W[-1][h // 2]) else: # 偶数行则返回中间较大值 print(max(W[-1][h // 2 - 1], W[-1][h // 2]))

(来了来了)
002https://www.lanqiao.cn/problems/598/learning/
全逆序冒泡排序
import os import sys # 请在此输入您的代码 ''' 全逆乱序的冒泡排序次数为N*(N-1)/2 15*14/2=105 14*13/2=91 100次交换至少需要15个字母 onmlkgihgfedcba 105-100=5,只需把第6个字母往后移到第1位即可
(相当于帮它解决了5次逆序) ''' print("jonmlkihgfedcba")
003https://www.lanqiao.cn/problems/1445/learning/
004https://www.lanqiao.cn/problems/597/learning/
***使用datatime库函数
import os import sys import datetime start = datetime.date(2000, 1, 1) end = datetime.date(2020, 10, 1) days = datetime.timedelta(days=1) ans = 0 while end >= start: if start.day == 1 or start.weekday() == 0: ans += 2 else: ans += 1 start += days print(ans)
005https://www.lanqiao.cn/problems/594/learning/
import os import sys # 请在此输入您的代码 i,j,num=0,0,0 #初始化坐标和计数器 while True: #无限循环开始 num+=1 #元素递增 if i==19 and j==19: #从0遍历到19,19 相当于20行20列 break #找到元素,跳出循环 if (i+j)&1: #↙奇数(0+1)(1+0) i+=1 #向下移↓ if j>0: j-=1 #向左移← else: #↗偶数(0+0)(1+1) j+=1 #向右移→ if i>0: i-=1 #向上移↑ print(num) #输出答案:761

浙公网安备 33010602011771号