IT系统题
对于一个整数数组A,Bk是数组A顺时针旋转k个位置后的数组,定义函数F为:
F(k) = 0*Bk[0] + 1*Bk[1] + ... + (n-1)*Bk[n-1].
计算函数F的最大值。
例子:
A = [4,3,2,6]
F(0) = (0*4) + (1*3) + (2*2) + (3*6) = 25
F(1) = (0*6) + (1*4) + (2*3) + (3*2) = 16
F(2) = (0*2) + (1*6) + (2*4) + (3*3) = 23
F(3) = (0*3) + (1*2) + (2*6) + (3*4) = 26
F(3)的值最大,因此输出为26.
代码如下:
Public class Main{ public static void main(String[] args){ int arr = {4,3,2,6}; int max = 0; System.out.println(max); } public static int rotate(int[] arr){ int max = 0; int Fvalue[] = new int[arr.length]; for(int i=0;i<arr.length;i++){ Fvalue[i]=getSum(i,arr); } for(int i=0;i<arr.length;i++){ if(max < Fvalue[i]){ max = Fvalue[i]; } } return max; } public static int getSum(int i,int[] arr){ int sum = 0; for(int m=0;n=0;m<arr.length;m++,n++){ if(i==0){ int tmp = m; sum += n*arr[tmp]; }else{ int tmp = (arr.length-i+m+arr.length)%arr.length; sum += n*arr[tmp]; } } return sum; } }
浙公网安备 33010602011771号