题目描述

上图给出了一个数字三角形。

从三角形的顶部到底部有很多条不同的路径。

对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。

路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右边的那个数。

此外,向左下走的次数与向右下走的次数相差不能超过 1。

输入格式
输入的第一行包含一个整数 N,表示三角形的行数。
下面的 N 行给出数字三角形。
数字三角形上的数都是 0 至 100 之间的整数。

输出格式
输出一个整数,表示答案。

输入样例
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

输出样例
27

数据范围
1 ≤ N ≤ 100


题解一(超时)
DFS:官网可得 50% 的分数

#include <iostream>
#include <cmath>
using namespace std;int n;
int ans;
int g[110][110];void dfs(int x, int y, int l, int r, int sum)
{if(x == n){if(abs(l - r) <= 1) ans = max(ans, sum);return;}dfs(x + 1, y, l + 1, r, sum + g[x + 1][y]);dfs(x + 1, y + 1, l, r + 1, sum + g[x + 1][y + 1]);
}int main()
{cin >> n;for (int i = 1; i <= n; i ++)for (int j = 1; j <= i; j ++)cin >> g[i][j];dfs(1, 1, 0, 0, g[1][1]);cout << ans << endl;return 0;
}

题解二
动态规划:

f[i][j]:从 [1, 1] 走到 [i, j] 的最大路径总和;

#include <iostream>
#include <cmath>
using namespace std;const int N = 110;struct Node
{int v, l, r;
}f[N][N];int main()
{int n;cin >> n;for (int i = 1; i <= n; i ++)for (int j = 1; j <= i; j ++)cin >> f[i][j].v;for (int i = 2; i <= n; i ++)for (int j = 1; j <= i; j ++)if(f[i - 1][j - 1].v > f[i - 1][j].v){f[i][j].v += f[i - 1][j - 1].v;f[i][j].l = f[i - 1][j - 1].l;f[i][j].r = f[i - 1][j - 1].r + 1;}else{f[i][j].v += f[i - 1][j].v;f[i][j].l = f[i - 1][j].l + 1;f[i][j].r = f[i - 1][j].r;}int ans = 0;for (int i = 1; i <= n; i ++)if(abs(f[n][i].l - f[n][i].r) <= 1)ans = max(ans, f[n][i].v);cout << ans << endl;return 0;
}

题解三
动态规划 && 找规律:

#include <iostream>
using namespace std;const int N = 110;int n;
int f[N][N];int main()
{cin >> n;for (int i = 1; i <= n; i ++)for (int j = 1; j <= i; j ++)cin >> f[i][j];for (int i = 2; i <= n; i ++)for (int j = 1; j <= i; j ++)f[i][j] += max(f[i - 1][j - 1], f[i - 1][j]);if(n % 2) cout << f[n][n / 2 + 1] << endl;else cout << max(f[n][n / 2 + 1], f[n][n / 2]) << endl;return 0;
}

蓝桥杯C/C++组省赛历年题

第十一届蓝桥杯 ——数字三角形相关推荐

  1. 蓝桥杯 数字三角形

    蓝桥杯 数字三角形 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1< ...

  2. 蓝桥杯-数字三角形 (java)

    算法训练 数字三角形 时间限制:1.0s 内存限制:256.0MB问题描述(图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大.●每一步可沿 ...

  3. 蓝桥杯数字三角形java,蓝桥杯数字三角形(java)

    题目要求: 问题描述 (图3.1-1)示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大. ●每一步可沿左斜线向下或右斜线向下走: ●1<三角形行 ...

  4. 蓝桥杯———数字三角形(JAVA)

    题目: 上图给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和. 路径上的每一步只能从一个数走到下一层和它最近的左 ...

  5. 蓝桥杯 数字三角形 贪心+动态规划

    参考代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; int data[105][105];in ...

  6. 蓝桥杯 省赛 python_第十一届蓝桥杯软件省级大赛第二场python3,类省赛,Python3

    试题 A: 门牌制作 本题总分:5 分 [问题描述] 小蓝要为一条街的住户制作门牌号. 这条街一共有 2020 位住户,门牌号从 1 到 2020 编号. 小蓝制作门牌的方法是先制作 0 到 9 这几 ...

  7. 2020年软件类第十一届蓝桥杯 省赛 python组(人生苦短,我用python)

    2020年软件类第十一届蓝桥杯 省赛 python组 题解 文章目录 2020年软件类第十一届蓝桥杯 省赛 python组 题解 试题 A: 门牌制作 试题 B: 寻找 2020 试题 C: 跑步训练 ...

  8. 第十一届蓝桥杯大赛(2020年)软件类省赛第二场 Python大学组 真题+个人解答

    试题A:门牌制作 本题总分:5分 [问题描述] 小蓝要为一条街的住户制作门牌号. 这条街一共有2020位住户,门牌号从1到2020编号. 小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将 ...

  9. 2020年第十一届蓝桥杯JavaC组(十月场)真题解析

    相关题目: 2016年第七届蓝桥杯真题解析JavaB组 2016年第七届蓝桥杯真题解析JavaC组 2017年第八届蓝桥杯真题解析JavaB组 2017年第八届蓝桥杯真题解析JavaC组 2018年第 ...

最新文章

  1. CSS3蓝色宽屏二级下拉菜单DEMO演示
  2. python与excel结合-Python与Excel 不得不说的事情
  3. 阿里云支撑马来西亚数字自由贸易区落地 帮助马来西亚中小企业参与全球贸易...
  4. poj3320Jessica's Reading Problem—尺取法(java)
  5. NumPy (6)-结构化数据类型数组
  6. mysql 字段值1_2_3 如何查询3是否存在?_MySQL根据col1中的值是否存在于col2中以及col3是否=值来更新col4...
  7. 等级保护2.0发布!过了4级的华为云如何帮助你?
  8. Java Vistor 设计模式
  9. 6425C-Lab5 管理计算机帐户
  10. 复杂作业车间调度-单机调度问题研究
  11. 前端-HTML的架构和常见标签
  12. 【webpack5】webpack-dev-server 热更新不能自动刷新浏览器
  13. vlog拍摄与剪辑入门之路
  14. 包装设计模式-Decorator
  15. scrapy配置user-agent中间件和ip代理中间件
  16. 人机关系一线牵——从注意力的视角审视人机关系
  17. ubuntu系统禁用自带Nouveau驱动
  18. 宝乐迪量贩式KTV加盟 开启KTV加盟创富大平台时代
  19. 完美国际单机修改服务器名,完美国际gm命令大全
  20. uniapp微信小程序canvas生成简单海报并下载

热门文章

  1. 项目经理常用的12大工具及5大最佳项目管理软件
  2. excel 您输入的公式存在错误。如果您输入的内容不是公式,请在第一个字符之前输入单引号(‘)
  3. 关于互相尊重和直言有讳
  4. 利用adb查找手机定位,并且打开地图定位
  5. 实例:用C#.NET手把手教你做微信公众号开发(8)--普通消息处理之链接(普通消息终结篇)
  6. httprunner-2-linux下搭建hrun(下)
  7. Eclipse汉化版本和导入src
  8. IT大学生成长周报 | 第 3 期
  9. Java break outer和continue outer的用法
  10. 网站访问速度慢的排查方法