• 结对开发之求环形数组的最大值


    结对者:王宏伟

    设计思路:为了实现数组的首尾相连接,则把数组写入两遍,即a[0],a[1],a[2],a[3],a[0],a[1],a[2],a[3]。求子数组最大值从第一个开始遍历到最后一个结束,依次往复向后推进求出子数组的最大值。

    源代码:

    //课堂测试
    //范亚雷 2016.04.11
    //import javax.swing.JOptionPane;
    import java.util.*;
    class Maxout{
        int[] list=new int[100];
        int carmax=0;
        int max;
        int length;
        Maxout(){}
        
        public void Input(){
            System.out.println("请输入数组的长度:");
            Scanner a=new Scanner(System.in);
            
            length=a.nextInt();
            
            if(length==0||length<0)   //数组长度为0,报错
            {System.exit(0);}
            
            Scanner     sca=new Scanner(System.in);
            
            System.out.println("请依次数组内的数:");  //输入
            for(int i=0;i<length;i++)
            {
                list[i]=sca.nextInt();
                list[i+length]=list[i];  //把数组连续写入两次,以实现首尾连接
            }
            
            max=list[0];
            //System.out.println(max);
        }
        
       public void Largest(){    //求最大子数组和
           int start=0;int end=0;
        for(int j=0;j<length*2;j++){
           for(int i=j;i<j+length;i++){
            if(carmax>=0)
                {
                    carmax=carmax+list[i];
                }
            else
                {
                    carmax=list[i];
                    start=i;               
                }
            
            if(max<carmax)
                {
                    max=carmax;
                    end=i;
                }
           }
            carmax=0;
        }
      
        
        
        System.out.println("环子数组的和最大为为:" + max); //输出max
         
      }
       
    }
    
     public class OutMax {
        public static void main(String[] args){
            Maxout m=new Maxout();
            m.Input();
            m.Largest();
        }
    }

    运行截图:

    总结:此次编程浪费了很长的时间,主要是想是想让时间复杂度为最小并且不是转换为求子数组的最小值的解决思路。所以一开始试了很长时间但都没有写成,最终还是选择用复杂的时间复杂度,简单的思路写成了这个程序。

  • 相关阅读:
    android学习2
    js返回上一页的方法
    《不管哪一天,都要陪猫猫一起过哦~》——开发日志
    在UE5中用KawaiiPhysics插件进行衣服物理模拟
    如何在Unity URP中添加画面模糊效果
    如何在Unity URP中利用Sobel添加屏幕空间深度边缘光
    No All Pattern Found!File Already Patched?
    vue3中使用keepalive
    int类型数据在内存中的高低位存储问题
    error: conflicting types for xxx in c
  • 原文地址:https://www.cnblogs.com/fan-xiaofan/p/5392409.html
Copyright © 2020-2023  润新知