大佬们,我这种做法对吗? public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; // 读取数据 for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } long sum = 0L; // dp[l][r]记录[l..r]区间的最大值是什么 int[][] dp = new int[n][n]; // 初始情况 区间只有一个元素 => dp[i][i] = arr[i] for (int i = 0; i < n; i++) { dp[i][i] = arr[i]; sum += arr[i]; } // 从区间长度为2的时候开始计算dp 区间长度为 i = l-r+1 for (int i = 2; i <= n; i++) { // 左端点从0开始,右端点不能大于n 为结束条件 for (int l = 0; i + l -1 < n ; l++) { int r = i + l - 1; dp[l][r] = Math.max(arr[r], dp[l][r-1]); // 累加最大值 sum += dp[l][r]; } } int totalCount = (n+1)*n/2; double res = (double) sum / totalCount; System.out.format("%.6f", res); }