将样写一遍,就能找到规律
// f[0]= 0*a + 1*b + 2*c + 3*d
// f[1]= 0*d + 1*a + 2*b + 3*c
// f[2]= 0*c + 1*d + 2*a + 3*b
转换一下:
// f[0]= 0*a + 1*b + 2*c + 3*d
// f[1]= 1*a + 2*b + 3*c + 0*d 规律:f[1]=f[0]+a+b+c+d-4*d
// f[2]= 2*a + 3*b + 0*c + 1*d 规律:f[2]=f[1]+a+b+c+d-4*c
public class _396 {
public static void main(String[] args) {
// f[0]= 0*a + 1*b + 2*c + 3*d
// f[1]= 1*a + 2*b + 3*c + 0*d f[1]=f[0]+a+b+c+d-4*d
// f[2]= 2*a + 3*b + 0*c + 1*d f[2]=f[1]+a+b+c+d-4*c
int arr[] = { 4, 3, 2, 6 };
int sum = 0;
int n=arr.length;
int f = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
f += i * arr[i];
}
int ans = f;
for (int i = 1; i < arr.length; i++) {
f = f + sum - n * arr[n - i];
ans = Math.max(ans, f);
}
System.out.println(ans);
}
}