zoukankan      html  css  js  c++  java
  • 个人作业--数组

    题目要求:求一个整数数组的子数组的和的最大值

                    1.控制台输入一个整型数组,数组里有正数也有负数。

                    2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

                    3.求所有子数组的和的最大值。

    解题思路:首先创建一个数组num[],然后接受控制台读取的数组值,把值存在数组中,然后把数组的第一个值付给rmax,随后进行循环比较,如果数组的第一个值为负,可以忽略,                  从正值开始计数,如果一个一个累加起来小于等于零,就重新开始复制,每次把最大值付给rmax,然后一次一次的刷新rmax,最后得出子数组的和的最大值。

    出现问题:最开始的时候,没有把数组的第一个值付给max,导致如果数组全负,则结果为0,改正之后把数组第一个进行赋值,就可以刷新负值的最大值

    package 数组;
    import java.util.Scanner;
    public class shuzu{
    	static Scanner in=new Scanner(System.in);
    public static void main (String[] args){
    	int n;
    	int num[]=new int[200];
    	int max=0;
    	int rmax=0;
    	System.out.println("请输入数组个数");
    	n=in.nextInt();
    	System.out.println("请输入数组");
    	for(int i=0;i<n;i++) {
    		num[i]=in.nextInt();
    	}
    	rmax=num[0];
    	for(int i=0;i<=n;i++) {
    		if(max<=0) {
    			max=num[i];
    		}else {
    			max+=num[i];
    		}
    		if(rmax<max) {
    			rmax=max;
    		}
    	}
    	
    
    	 
    	  System.out.println(rmax);
    	
    
    }
    }
    	
    

      

    总结:对于刚看到这个题并且基础薄弱的我,一度连循环语句都不会写了,因此刚开始先查了java的循环语句,声明等等,然后自己卸了一个循环语句,但是却无法实现特殊子数组的最大和,只能实现最简单的求和,下课之后查询了其他大佬的代码,并能成功理解他们的算法思想,我用了一小时的时间一点点实践这个算法,虽然难理解,但是经过实践最终理解了,理解之后发现算法特别简单,本来我还想一点点循环得出结果,但是这个算法给了我很大的灵感,有些算法可以简化,是特别简单的,只是难理解,自己想不到,虽然我现在还特别菜,每次都需要理解别人的算法,但是我会理解之后重新写代码,这样一点点我相信会有进步的。

  • 相关阅读:
    Windows 7下 搭建 基于 ssh 的sftp 服务器
    理解ThreadLocal(二)
    理解ThreadLocal(一)
    Putty使用公钥认证时,报错:Disconnected: No supported authentication methods available(server sent:public key) 问题的解决
    SFTP信任公钥配置及JSCH库
    怎样在WIN7系统下安装IIS
    深入研究B树索引(一)
    【转】EntityFramework(EF)贪婪加载和延迟加载的选择和使用
    【转】Ext JS 集合1713个icon图标的CSS文件
    [转]ASP.NET MVC 4 最佳实践宝典
  • 原文地址:https://www.cnblogs.com/ljm-zsy/p/10504593.html
Copyright © 2011-2022 走看看