给定一个数塔,其存储形式为如下所示的下三角矩阵。在此数塔中,从顶部出发,在每一节点可以选择向下走还是向右走,一直走到底层。请找出一条路径,使路径上的数值和最大。
输入样例(数塔):
9
12 15
10 6 8
2 18 9 5
19 7 10 4 16
输出样例(最大路径和):
59
import java.util.Scanner;
//测试数据
//9
//12 15
//10 6 8
//2 18 9 5
//19 7 10 4 16
public class HDU {
private int [][] data = new int[50][50];//存储原始数塔数据
private int [][] d = new int[50][50];//存储中间结果
protected void hdu(){
int i;//行
int j;//列
int b;//查找路径使用
int ii;//记录查找过程i值
int jj;//记录查找过程j值
System.out.println("请输入数塔数据");
Scanner scanner = new Scanner(System.in);
for(i = 1;i <= 5;i++){
for(j = 1;j <= i;j++){
data[i][j] = scanner.nextInt();
d[i][j] = data[i][j];
}
}
//计算最大值
for(i = 4;i >= 1;i--){
for(j = 1;j