循环列表下练习循环子数组

这道题主要是在求最大整数数组的基础上实现循环数组的实现

主要是基于两个问题:如何解决循环和如何解决求最大子数组

我解决循环的办法就是将数组长度扩大到两倍

最大子数组就是用动态规划

下面是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);
             } 
         }
    }

 

posted @ 2020-02-27 14:24  或者活着  阅读(221)  评论(0编辑  收藏  举报