算法训练 数字三角形

举报
陈言必行 发表于 2021/08/14 01:16:16 2021/08/14
【摘要】 问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路   径,使该路径所经过的数字的总和最大。   ●每一步可沿左斜线向下或右斜线向下走;   ●1<三角形行数≤100;   ●三角形中的数字为整数0,1,…99;   输入格式 文件中首先读到的是三角形的行数...
问题描述
(图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
  径,使该路径所经过的数字的总和最大。
  ●每一步可沿左斜线向下或右斜线向下走;
  ●1<三角形行数≤100;
  ●三角形中的数字为整数0,1,…99;
 
输入格式
文件中首先读到的是三角形的行数。

  接下来描述整个三角形
输出格式
最大总和(整数)
 
样例输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
 
样例输出
30
 
----------------------------------------------------------------------------
 
 

      
  1. import java.util.Scanner;
  2. public class Main {
  3. //数字三角形
  4. public static void main(String[] args) {
  5. // TODO Auto-generated method stub
  6. Scanner sc=new Scanner(System.in);
  7. int n=sc.nextInt();
  8. int[][] a=new int[n][100];
  9. for(int i=0;i<n;i++){
  10. for(int j=0;j<=i;j++){
  11. a[i][j]=sc.nextInt();
  12. }
  13. }
  14. for(int i=n-1;i>=1;i--){
  15. for(int j=0;j<i;j++){
  16. a[i-1][j]+=Math.max(a[i][j],a[i][j+1]);
  17. //将i行最大的数加到i-1行所对应得数,这样,等加到第一个数时,就是最大的路径上的数字和
  18. }
  19. }
  20. System.out.println(a[0][0]);
  21. }
  22. }

 
 

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/76091310

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。