腾讯遮体是否可以这样,因为不能排序,所以数据其实没有规律,直接dp感觉是没法做到的,只能采用for循环,但是可以优化,程序还有优化空间,但是不想优化了
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class findSubsegmentMax {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] str_1 = str.split(" ");
List<Integer> list = new ArrayList<Integer>();
for(int i=0; i<str_1.length; i++) {
list.add(Integer.parseInt(str_1[i]));
}
int n = list.size(), maxNum=0;
System.out.println("n: " + n);
int[] res;
for(int i=0; i<list.size(); i++) {
while(i < n) {
res = find(list, i, n);
if(maxNum < res[0]) maxNum = res[0];
n = res[1] - 1;
}
n = list.size();
}
System.out.println(maxNum);
}
public static int[] find(List<Integer> list, int m, int n) {
Integer min=list.get(m), sum=0, index=-1;
for(int i=m; i<n; i++) {
if(min > list.get(i)) {
min = list.get(i);
index = i;
}
sum += list.get(i);
}
sum *= min;
// System.out.println("sum and index: " + sum + " " + index);
int[] ret = {sum, index};
return ret;
}
}