数字三角形,给定一个n行数字组成的三角形,实际算法,计算出从三角形的顶端到底部,所经过的路径的数字的和最大:
例如:输入:
5 //输入所要输入的数字三角形的行数
7 //输入类容
3 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;
}
}