大佬们,我这种做法对吗?     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);     }