zoukankan      html  css  js  c++  java
  • 课堂练习四

    设计思路:

    ①申请一个len长度的数组arr和len长度的最大和数组maxsum。

    ②用两个for循环嵌套,外面的for循环决定数组中开始计算的首位置,内部的for循环进行子数组最大和的运算,和大于maxsum就替换maxsum的值,小于0,则归零。

    ③在内部for循环中加入成环思路,判断j的值是否循环到数组的最后一个值,如果循环到最后一个值将-1赋给j,所以j就会从-1开始+1循环,直到j=i-1处停止。

    ④计算程序完成之后将得到的maxsum[i]的值进行比较,for循环选出最大值即可。

    源代码:

    package subarraymaxadd;
    import java.util.*;
    
    public class Subarraymaxadd {
    
        public static void main(String[] args) {
        
            Scanner input = new Scanner(System.in);
            System.out.println("请输入数组长度:");
            int len = input.nextInt();
            int[] arr = new int[len];
            int[] maxsum = new int[len];
            System.out.println("请输入数组:");
            for(int i=0;i<len;i++)
            {
                arr[i] = input.nextInt();
            }
            input.close();
            
            for(int i=0;i<len;i++)
            {
                maxsum[i] = arr[i];
                int sum = 0;
                for(int j=i;j<len;j++)
                {
                    sum =sum + arr[j];
                    
                    if(sum>maxsum[i])
                    {
                        maxsum[i]=sum;
                    }
                    if(sum<0)
                    {
                        sum=0;
                    }
                    
                    if(j==len-1)//此处两个if语句为成环部分
                    {
                        j=-1;
                    }
                    if(j==i-1)
                    {
                        break;
                    }
                }
            }
            
            int sum=0;
            sum = maxsum[0];
            for(int i=1;i<len;i++)
            {
                if(sum<maxsum[i])
                {
                    sum=maxsum[i];
                }
            }
            
            System.out.println("子数组的最大和为:"+sum);
    
        }
    
    }

    结果截图:

    工作照:

    合作过程及体会:

    在做之前我们先各自思考办法,搭档开始在想可以将数组变成两个数组,相当于算两遍就跟成环是一样的,但是我就说如果全是正数的话结果就不对了,果断放弃了。我提出了两个for循环嵌套的成环方法,觉得是很合理,在编译过程中出现了一些不细心的小错误,搭档也帮找出来了。

  • 相关阅读:
    年度开源盛会 ApacheCon 来临,Apache Pulsar 专场大咖齐聚
    开源流数据公司 StreamNative 正式加入 CNCF,积极推动云原生策略发展
    php摇杆Tiger摇奖
    php调试局部错误强制输出 display_errors
    php文件写入PHP_EOL与FILE_APPEND
    window自动任务实现数据库定时备份
    php 跨服务器ftp移动文件
    linux 关于session缓存丢失,自己掉坑里面了
    mysql 定时任务
    mysql 查询去重 distinct
  • 原文地址:https://www.cnblogs.com/kt97458/p/5392833.html
Copyright © 2011-2022 走看看