11.20.2024刷华为OD C题型

HJ65 查找两个字符串a,b中的最长公共子串

链接
代码

short_str = input()
long_str = input()
if len(short_str) > len(long_str):
    temp = short_str
    short_str = long_str
    long_str = temp

res = []
for length in range(len(short_str)):
    if length == 0:
        continue
    for start in range(len(short_str) - length + 1):
        com = short_str[start:start+length]
        if com in long_str:
            res.append(com)

max_length = len(res[-1])
same_length_str = []
for str1 in res:
    if len(str1) == max_length:
        same_length_str.append(str1)
        
print(same_length_str[0])

HJ67 24点游戏(递归–值得学习)

在这里插入图片描述

def check(nums, result):
    """
    递归检查能否通过给定的数字和运算符组合得到24

    Args:
        nums: 待运算的数字列表
        result: 当前计算结果

    Returns:
        bool: 是否能得到24
    """

    if not nums:  # 数组为空,判断是否等于24
        return result == 24

    for i in range(len(nums)):
        rest = nums[0:i] + nums[i+1:]
        # rest = nums.copy()
        # rest.pop(i)  # 删除当前使用的数字
        # 分别进行加减乘除四种运算,并进行递归检查
        if check(rest, result + nums[i]) or \
                check(rest, result - nums[i]) or \
                check(rest, result * nums[i]) or \
                check(rest, result / nums[i]):
            return True
    return False


if __name__ == "__main__":
    while True:
        try:
            # nums = []
            nums = list(map(int, input().split()))
            if check(nums, 0):
                print("true")
            else:
                print("false")
        except:
            break

HJ68 成绩排序(dict会去重key,排序用元组,可以有多个参数)

在这里插入图片描述

n = int(input())
order = int(input())
li = []

for i in range(n):
    name, score = input().split()
    li.append([name, score, i])
if order == 0: #降序
    li = sorted(li, key = lambda x : (int(x[1]), -int(x[2])),  reverse = True)
else:
    li = sorted(li, key = lambda x : (int(x[1]), int(x[2])))

for i in range(n):
    print(f"{li[i][0]} {li[i][1]}")

HJ69 矩阵乘法

在这里插入图片描述

x = int(input())
y = int(input())
z = int(input())

matrixA = []
matrixB = []
for _ in range(x):
    temp = list(map(int, input().split()))
    matrixA.append(temp)
print(matrixA)
for _ in range(y):
    temp = list(map(int, input().split()))
    matrixB.append(temp)

matC = [[0 for _ in range(x)] for _ in range(z)]

for i in range(x):
    for j in range(z):
        temp = 0
        for k in range(y):
            temp = matrixA[i][k] * matrixB[k][j]
            matC[i][j] += temp

print(matC)

语法知识记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值