zoukankan      html  css  js  c++  java
  • 结对开发之求环形数组的最大值

    结对者:王宏伟

    设计思路:为了实现数组的首尾相连接,则把数组写入两遍,即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();
        }
    }

    运行截图:

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

  • 相关阅读:
    WordPress主题开发:数据调用
    WordPress主题开发:style.css主题信息标记
    WordPress主题开发:开启侧边栏小工具功能
    WordPress主题开发:开启导航菜单功能
    Instrument 实用详解
    IOS开发~GCD--讲的巨详细,而且还有例子工程
    CATransition 实践
    让提示界面始终保持在页面的最前端(页面置顶)
    xcode调试查看变量的值
    GCD实现多线程 实践
  • 原文地址:https://www.cnblogs.com/fan-xiaofan/p/5392409.html
Copyright © 2011-2022 走看看