数字三角形

数字三角形,给定一个n行数字组成的三角形,实际算法,计算出从三角形的顶端到底部,所经过的路径的数字的和最大:

例如:输入:

5 //输入所要输入的数字三角形的行数

7 //输入类容

8

8 1 0

2 7 4 4

4 5 2 6 5

输出:30


解决具体代码如下:

import java.util.Scanner;


public class ShuZiSanJiaoXing {


/**
* 数字三角形:给定n行数字三角形,计算从三角形的顶至底的一条路径,使得该路径经过的数字最大
* 解决方案如下:
* 2016/4/26/22:30 
* 软件1404班
* 秃小驴
*/
private static int[][] shuzi={{0}};   
private static int n;

public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
shuzi = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
shuzi[i][j] = scanner.nextInt();
}
}
System.out.println(Suan(shuzi, n));

}

private static int Suan(int[][] shuzi,int n){
  
int i,j;  
   for (i=n-2; i>=0; i--) 
   {  
       for (j=0; j<i+1; j++)   
       {  
           int t = ((shuzi[i+1][j]>shuzi[i+1][j+1])? shuzi[i+1][j] :shuzi[i+1][j+1]); 
           shuzi[i][j] += t ;  
       }  
   }  
   int x =shuzi[0][0];
   return x;

}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值