emm,起晚了,只做了第一题,附题解
从最后一排开始往上找,则res[i]=Math.max(res[i],res[i+1])+data[n][i];
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[][] data=new int[n][n]; for(int i=0;i<n;i++) { for(int j=0;j<=i;j++) { data[i][j]=sc.nextInt(); } } int[] res=new int[n]; for(int i=0;i<n;i++) { res[i]=data[n-1][i]; } for(int i=n-2;i>=0;i--) { for(int j=0;j<=i;j++) { res[j]=Math.max(res[j], res[j+1])+data[i][j]; } } System.out.println(res[0]); sc.close(); } }