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

 

posted @ 2022-08-21 23:11  0MrMKG  阅读(36)  评论(0)    收藏  举报