这道题主要是在求最大整数数组的基础上实现循环数组的实现
主要是基于两个问题:如何解决循环和如何解决求最大子数组
我解决循环的办法就是将数组长度扩大到两倍
最大子数组就是用动态规划
下面是java代码:
package com.math.begin; import java.util.Scanner; import org.omg.CosNaming.IstringHelper; public class over { private static int max(int ans, int i) { // TODO Auto-generated method stub if(ans>=i) { return ans; } else return i; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num=4; int[] list = new int[num]; //创建一个数组存放数据 System.out.println("请输入"+num+"个数据"); for (int i = 0; i < num; i++) { //把数据写进数组中 list[i] = sc.nextInt(); } if(list[num-1]+list[0]>list[0]) { list[0]+=list[num-1]; //System.out.println(list[0]); for(int i=1;i<num-1;i++) { if(list[i]+list[i-1]>list[i]) list[i]=list[i]+list[i-1]; } int ans=-100000; for(int i=1;i<num;i++) ans=max(ans,list[i]); System.out.println(ans); } else { for(int i=2;i<num-1;i++) { if(list[i]+list[i-1]>list[i]) list[i]=list[i]+list[i-1]; } int ans=-100000; for(int i=1;i<num;i++) ans=max(ans,list[i]); System.out.println(ans); } } }