计算机算法设计与分析(算法实现题3)
3-4 数字三角形问题
-
问题描述:
给定一个由n行数字组成的数字三角形。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 -
算法设计:
对于给定的由n行数字组成的数字三角形,计算三角形的顶至底的路径经过的数字和的最大值。 - 注:1<=n<=100,所有数字在0-99之间。
具体代码实现:
import java.util.Random;
import java.util.Scanner;
public class Realize3_4 {
public static void main(String[] args) {
System.out.println("请输入三角形的行数n(1<=n<=100):");
Scanner input = new Scanner(System.in);
eg(input);
}
public static void eg(Scanner input){
String row = input.next();
String[] arr = new String[Integer.valueOf(row)];
int sum=0;
System.out.println("生成的数字三角形为:");
for (int i = 0; i < Integer.valueOf(row); i++) {
int m = 0,num;
while (i >= m){
Random rand = new Random();
num = rand.nextInt(99);
arr[m] = String.valueOf(num);
System.out.print(num+" ");
m++;
}
System.out.println();
int temp=0;
for (int j = 0; j < m; j++) {
if(Integer.valueOf(arr[j]) > temp){
temp=Integer.valueOf(arr[j]);
}
}
sum+=temp;
}
System.out.println("从三角形的顶至底的路径经过的数字和的最大值为:"+sum);
}
}
运行结果: