蓝桥杯

您所在的位置:网站首页 c输出数字三角形 蓝桥杯

蓝桥杯

2024-04-12 13:43| 来源: 网络整理| 查看: 265

题目描述

上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。

输入描述

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

输出描述

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

输入输出示例 输入

5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5

输出

27

思路 注意题目要求“向左下走的次数与向右下走的次数相差不能超过1”,开始没注意到,以为任意一条路走到底部都可以,但是代码写完后和示例的答案不相同,才注意到。 先忽略题目要求,求到达最后一层的最大路径和,只需要将本层的值与上一层与之相近(左上和右上)的较大数值相加,则最后一层的值即变成了顶层到底层路径和的较大值。 现在加入题目要求,左下有右下走的次数相差不能超过1,根据要求,我们发现当层数位奇数层时,只有中间的1个数值符合要求,偶数层时,中间的两个数值均符合要求,只需找到两个数中更大的一个即可。 代码 #include int main(){ int num[110][110]={0}; int n,i,j; int max=0; scanf("%d",&n); for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3