11.25.2024刷华为OD

文章目录

  • [HJ76 尼科彻斯定理(观察题,不难)](#HJ76 尼科彻斯定理(观察题,不难))
  • [HJ77 火车进站(DFS)](#HJ77 火车进站(DFS))
  • [HJ91 走格子方法,(动态规划,递归,有代表性)](#HJ91 走格子方法,(动态规划,递归,有代表性))
  • [HJ93 数组分组(递归)](#HJ93 数组分组(递归))
  • 语法知识记录

HJ76 尼科彻斯定理(观察题,不难)

python 复制代码
n = int(input())

# from numpy import right_shift
total = n ** 3
ave = 0
ave = int(total / n)
left_L = []
right_L = []
mid = []
if ave % 2 == 0:
    left_end = ave - 1
    right_start = ave + 1
    left_L.append(left_end)
    right_L.append(right_start)
    for i in range(int(n/2)-1):
        left_L.append(left_end - (i+1)*2)
        right_L.append(right_start + (i+1)*2)
else:
    # left_end = ave - 2
    # right_start = ave + 2
    for i in range(int((n-1)/2)):
        left_L.append(ave - (i+1)*2)
        right_L.append(ave + (i+1)*2)
    mid.append(ave)
left_L = left_L[::-1]
# print(left_L+mid+right_L)
res = left_L+mid+right_L
res = [str(ch) for ch in res]
print('+'.join(res))

HJ77 火车进站(DFS)

python 复制代码
# 定义一个全局变量 res 用于存放最终的出站序列
res = []

# 定义递归函数 dfs
def dfs(wait, stack, out):
    """
    递归深度优先搜索所有可能的出站序列
    
    参数:
    wait (list): 还未进站的火车编号列表
    stack (list): 当前已经进站但未出站的火车编号
    out (list): 已经出站的火车编号序列
    """
    # 如果 wait 和 stack 都为空,说明所有火车已经完成进站出站,将当前的出站序列添加到 res 中
    if not wait and not stack:
        res.append(' '.join(map(str, out)))
    
    # 如果 wait 不为空,将当前 wait 列表的第一个火车编号入栈,递归调用 dfs 函数
    if wait:
        dfs(wait[1:], stack + [wait[0]], out)
    
    # 如果 stack 不为空,将栈顶的火车编号出栈,添加到 out 序列中,递归调用 dfs 函数
    if stack:
        dfs(wait, stack[:-1], out + [stack[-1]])

# 主程序
while True:
    try:
        # 读取输入数据
        n, nums = int(input()), list(map(int, input().split()))
        
        # 调用 dfs 函数计算所有的出站序列
        dfs(nums, [], [])
        
        # 按照字典序输出所有的出站序列
        for i in sorted(res):
            print(i)
        
        # 清空 res 列表,准备处理下一组数据
        res.clear()
    except:
        # 遇到异常则退出循环
        break

HJ91 走格子方法,(动态规划,递归,有代表性)

python 复制代码
def func(x,y):
    if x < 0 or y < 0:
        return 0
    elif x == 0 or y == 0:
        return 1
    else:
        return func(x-1, y)+func(x, y-1)

 
while True:
    try:
        n, m = map(int, input().split())
        res = func(n, m)
        print(res)
    except:
        break
python 复制代码
```py
#动态规划解决
#nowcoder不能导入numpy模块,只能手工创建二维数组
#重点注意二维数据的创建方法,重点注意其横竖坐标,注意注意
#dp = [[1 for i in range(n+1)] for j in range(m+1)],横坐标是 n, 竖坐标是m

while True:
    try:
        n,m = map(int, input().split(' '))
        dp = [[1 for i in range(n+1)] for j in range(m+1)]
        for i in range(1,m+1):
            for j in range(1,n+1):
                dp[i][j] = dp[i-1][j]+dp[i][j-1]
        print(dp[m][n])
    except:
        break

HJ93 数组分组(递归)

python 复制代码
def fun(sum3, sum5, other):

    if sum3 == sum5 and len(other) == 0:
        return True
    elif len(other) == 0:
        return False
    else:
        return fun(sum3 + other[0], sum5, other[1:]) or fun(
            sum3, sum5 + other[0], other[1:]
        )


while True:

    try:
        n = int(input())
        num_list = list(map(int, input().split()))

        list3, list5, other = [], [], []
        for i in num_list:
            if i % 3 == 0:
                list3.append(i)
                continue
            if i % 5 == 0:
                list5.append(i)
                continue
            other.append(i)
        sum3 = sum(list3)
        sum5 = sum(list5)
        if fun(sum3, sum5, other):
            print("true")
        else:
            print("false")

    except:
        break

语法知识记录

相关推荐
CoderYanger14 小时前
B.双指针——3194. 最小元素和最大元素的最小平均值
java·开发语言·数据结构·算法·leetcode·职场和发展·1024程序员节
自信150413057591 天前
初学者小白复盘22之——结构体
c语言·数据结构·1024程序员节
_Power_Y1 天前
黑马点评逻辑梳理+面试题
数据库·redis·学习·1024程序员节
开开心心_Every2 天前
Excel图片提取工具,批量导出无限制
学习·pdf·华为云·.net·excel·harmonyos·1024程序员节
爱喝水的鱼丶3 天前
SAP-ABAP:SAP概述:数据处理的系统、应用与产品
运维·学习·sap·abap·1024程序员节
CoderJia程序员甲4 天前
GitHub 热榜项目 - 日榜(2025-11-13)
ai·开源·github·1024程序员节·ai教程
小坏讲微服务5 天前
MaxWell中基本使用原理 完整使用 (第一章)
大数据·数据库·hadoop·sqoop·1024程序员节·maxwell
liu****5 天前
18.HTTP协议(一)
linux·网络·网络协议·http·udp·1024程序员节
洛_尘5 天前
JAVA EE初阶 6: 网络编程套接字
网络·1024程序员节
2301_800256116 天前
关系数据库小测练习笔记(1)
1024程序员节