首页 > 其他分享 >第十一届蓝桥杯:数字三角形

第十一届蓝桥杯:数字三角形

时间:2024-03-04 19:00:11浏览次数:22  
标签:第十一届 int res 路径 蓝桥 range input 三角形 dp

目录

题目

暴力:最大路径和

n = int(input())  # 输入数塔的行数
# 创建一个二维数组a来表示数塔,初始值都为0
a = [[0] * (n+1) for _ in range(n+1)]
# 从第1行开始逐行读取输入,并计算最大路径和
for i in range(1, n+1):
    for j in range(1, i+1):
        temp = int(input())  # 读取当前位置的值
        a[i][j] = max(a[i-1][j-1], a[i-1][j]) + temp  # 计算当前位置的最大路径和
res = 0
# 遍历最后一行,找到最大路径和
for i in range(1, n+1):
    if res < a[n][i]:
        res = a[n][i]
print(res)  # 输出最大路径和

题解:动态规划

n = int(input())  # 输入数塔的行数
dp = []  # 创建一个空列表 dp,i,j表示横纵坐标,dp的值表示在该坐标下的最大路径和
# 逐行读取输入,并将每行的值转换为整数列表,添加到 dp 列表中
for i in range(n):
    dp.append(list(map(int, input().split())))
# 从第2行开始计算最大路径和,可以防止下标溢出
for i in range(1, n):
    for j in range(i+1):
        if j == 0:  # 最左边一列的情况,只能来自于他的上一个
            dp[i][j] += dp[i-1][j]
        elif j == i:  # dp[i][j] 对角线的位置,只能来自他的左上
            dp[i][j] += dp[i-1][j-1]
        else:#其他情况的状态转移方程,当前位置的最大路径和等于上一级的正对元素和左上之间较大的一个路径和加上当前路径
            dp[i][j] += max(dp[i-1][j], dp[i-1][j-1])
#要保证向左下走的次数与向右下走的次数相差不能超过 1,那么如果最后一行是奇数个,就肯定落在最中心的点
# 如果是偶数,同理,只可能落在最中间的两点,取最后一行最中间两点的最大值
if n % 2 == 0:  # 偶数行数情况下取中间两点中的最大值
    print(max(dp[n-1][n//2-1], dp[n-1][n//2]))
else:
    print(dp[n-1][n//2])  # 奇数行数情况下取中间点

标签:第十一届,int,res,路径,蓝桥,range,input,三角形,dp
From: https://www.cnblogs.com/lushuang55/p/18052432

相关文章

  • 第十一届蓝桥杯试题I:平面切分
    目录题目题解题目题解多画一下发现面的数量等于交点数量+1,进而转化为求交点的数量,注意同一个交点只记一次,需要去重操作lines=set()#存储直线的集合res=1#初始面的数量为1n=int(input())#输入边的数量defcheck(A,B):points=set()#存储交点的......
  • P8681 [蓝桥杯 2019 省 AB] 完全二叉树的权值
    做这道题的时候混淆了满二叉树和完全二叉树的概念:满二叉树:顾名思义,就是塞满了完全二叉树:除了最后一层之外,每一层都必须是满的,且最后一层如果不满,则所有节点都尽可能靠左。#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#defineFor(i,j,n......
  • JAVA案例:打99乘法表和打三角形
     packagecom.itheima.anli;publicclassAnli3{publicstaticvoidmain(String[]args){for(inti=1;i<=9;i++){for(intj=1;j<=i;j++){intx=j*i;System.out.print(j+"x"+i+&......
  • 蓝桥杯细节补充
    structm{inti,j,k;booloperator<(constm&t){if(i!=t.i)returni<t.i;if(j!=t.j)returnj<t.j;returnk<t.k;}}m[N];//进行结构体的比较时,重载运算符规定好规则,然后用sort进行排序sort(m,m+num);1221.四平方和https......
  • P8598 [蓝桥杯 2013 省 AB] 错误票据 题解
    思路考虑将\(id\)从小到大排序,然后从\(2\)下标开始扫描一遍\(id\)数组,若当前的\(id_i-id_{i-1}>1\),则说明当前\(id\)存在断号,输出\(id_i-1\);若当前的\(id_i=id_{i-1}\),则说明当前\(id\)存在重号,输出\(id_i\)。注意断号与重号需要分开计算。#include<b......
  • 2024AcWing蓝桥杯集训·每日一题-差分
    1.[AcWing4262.空调]题目描述FarmerJohn的\(N\)头奶牛对他们牛棚的室温非常挑剔。有些奶牛喜欢温度低一些,而有些奶牛则喜欢温度高一些。FarmerJohn的牛棚包含一排\(N\)个牛栏,编号为\(1…N\),每个牛栏里有一头牛。第\(i\)头奶牛希望她的牛栏中的温度是\(p_i\),而现......
  • 蓝桥杯2020决赛:试题 I 奇偶覆盖
    原题如果不考虑奇偶性,其实就是扫描线的板子。考虑如何处理奇偶:首先在线段树存两个变量\(len_1\)以及\(len_2\),分别表示奇长度和偶长度。再用\(sum\)记录当前两个端点之间被覆盖了多少次。然而我们无法直接获得每一个子区间的具体覆盖数目。所以从奇偶性的特点方面入手。......
  • 杨辉三角形
    杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:1111211331给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前......
  • 2024AcWing蓝桥杯集训·每日一题-前缀和
    1.[AcWing562.壁画]题目描述Thanh想在一面被均分为\(N\)段的墙上画一幅精美的壁画。每段墙面都有一个美观评分,这表示它的美观程度(如果它的上面有画的话)。不幸的是,由于洪水泛滥,墙体开始崩溃,所以他需要加快他的作画进度!每天Thanh可以绘制一段墙体。在第一天,他可以自由的......
  • 2024AcWing蓝桥杯集训·每日一题-二分
    1.[AcWing503.借教室]题目描述在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来\(n\)天......