- <img border="0" alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=68392&size=300x300&key=933dc64c1e6363ef&nocache=yes&type=fixnone" aid="attachimg_68392">package 论坛提问;
- import java.util.*;
- import org.junit.Test;
- /*
- * 有一个数字串array,包含100个正数和负数随机分布,要找到他的一个子串array[i...j](0<=i<=j<=100),
- * 使得在array的所有子串中,array[i...j]的和最大。比如:串{1,-3,5,-2,6}的最大子串为{5,-2,6}。
- */
- public class maxSum {
- @Test
- public void test(){
- List<Integer>list=new ArrayList<Integer>();
- Integer max = -100;//初始最大值设为-100
- int value;
- for(int i=0;i<100;i++)
- list.add((int)(Math.random()*200-100));//随机生成-100~100(不包括100)之间的数。
- System.out.println(list);
- for(int i=0;i<list.size()-1;i++){
- for(int j=i+1;j<list.size();j++){
- value=(int)sum(list.subList(i, j));
- if(max<value)
- max=value;
- }
- }
- System.out.print(max);
- }
- /*
- * 求数组中数的和
- */
- static Integer sum(List<Integer> list){
- int sum=0;
- Iterator it=list.iterator();
- while(it.hasNext()){
- sum+=(int)it.next();
- }
- return sum;
- }
- }
复制代码
|
|