您的位置:首页 > 编程语言

今日头条手写代码-找出指定规则下和最大的子数组

2017-04-12 09:48 253 查看
给定乱序数组

子数组元素两两不相邻

子数组和最大

import java.util.*;

public class Main{

public static int sum(List<Integer> list){
int sum =0 ;
for(Integer i:list){
sum+=i;
}
return sum;
}

private static int ans= 0;
private static List<Integer> ansList = null;

public static void dfs(int arr[],int pos,ArrayList<Integer> res){
if(pos >= arr.length){
int sum = sum(res);
if(ans < sum){
ansList = res;
ans = sum;
}
return;
}
// not choose
dfs(arr,pos+1,res);
// choose
ArrayList<Integer> newList = new ArrayList<Integer>(res);
newList.add(arr[pos]);
dfs(arr,pos+2,newList);
HashSet->HashMap
}

public static void main(String[] args){
int arr[] = new int[]{3, 5, 2, 4, -10, 8, 2, 4};
dfs(arr,0, new ArrayList<Integer>());
System.out.println(ans);
for(Integer i : ansList){
System.out.print(i+" ");
}
System.out.println();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: