结对编程之子数组最大的和(由于一直登不上我的账号,在规定日期内只在我搭档的博客上交了)

合作照片:

设计思想:

在原程序的基础上,再加一个循环,循环从最后一位数开始,到它之前的数结束;

可以将最后一位数赋给第一个数,剩下的数依次向前进一位;

计算方法和上次相同,每次循环都加上相邻的数,比较是否小于0,若小于0则将和的值赋为0,从下一位重新开始相加;若大于最初的最大值,则将和的值赋给最大值;

上次程序实现了首尾不连接的最大值,这次循环实现首尾连接的最大值,后再比较两次最大值,返回其中最大的值。

合作过程:

     首先,两人在一起对编程题目进行讨论,发表自己的见解,并且对上次的编程进行回顾总结,对上次的思路进行整理,将这次程序进行完善。

源程序代码:

//求数组中子数组和的最大值
import java.util.Scanner;
public class Test3{
  public static void main(String[] args){
      int N=3;
      int list[]=new int [N];
      //创建一个新数组
      Scanner in=new Scanner(System.in);
      int i;
      System.out.println("请输入数组:");
      for(i=0;i<N;i++)
      {
          list[i]=in.nextInt();
      }
      max_ l=new max_();
      System.out.print("子数组最大的和为:  "+l.max_(list,N));
      //调用函数
      in.close();
  }
}
class max_
{
    int max_(int list[],int length)
    {
        int i;
        int max;
        int lmax1=0;
        int lmax2=0;
        int max1=list[0];
        //设最大值为list[0]
        for(i=0;i<length;i++)
        {
            lmax1+=list[i];
            if(lmax1>max1||lmax1==max1)
            {
                max1=lmax1;
            }
            if(lmax1<0)//若小于0,则从后一个数开始加和
            {
                lmax1=0;
                if(max1<list[i]||max1==list[i])
                {
                    max1=list[i];
                }
            }
            //若数组全为负数,求最大值
        }
        //实现首尾相接,求最大值
        int sum;
        sum=list[length-1];
        for(i=0;i<length-1;i++)
        {
            list[i+1]=list[i];
        }
        list[0]=sum;
        int max2=list[0];
        for(i=0;i<length;i++)
        {
            lmax2+=list[i];
            if(lmax1>max2||lmax1==max2)
            {
                max2=lmax2;
            }
            if(lmax2<0)//若小于0,则从后一个数开始加和
            {
                lmax2=0;
                if(max2<list[i]||max2==list[i])
                {
                    max2=list[i];
                }
            }
            //若数组全为负数,求最大值
        }
        if(max1>max2)
        {
            max=max1;
        }
        else
            max=max2;
        return max;
    }
}

结果截图:

总结体会:

两次程序的设计思想是基本相同的,我们只需要在原程序的基础上加一个循环求得首尾连接的最大值,再比较出最大值即可。

时间: 2024-10-13 16:23:00

结对编程之子数组最大的和(由于一直登不上我的账号,在规定日期内只在我搭档的博客上交了)的相关文章

结对编程收获-Core10组-PB16110698

本周结对编程追加作业:记录收获.坦白说,我的收获多而杂,一时不知从何说起,以下试图从各方面简要谈谈. 一.编程能力收获 从编程能力方面,我收获的主要是类的设计思路和算法设计.在作业要求blog的指引下,我和同伴一同思考.选用类,最终决定采用我提议的方案,类中的变量名.变量数量都是由我提议和设计完成的,主要基于要求的功能的实现.变量以外,还需要设计类的函数,这就涉及到算法层面.一开始,我对于生成运算式方面非常生疏,翻了半天谭浩强红皮书,又在团队作业的小组中讨论了一阵,终于决定采用树的形式生成,辅以

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172315 20172318 姓名 :胡智韬 陆大岳 伙伴第一周博客地址: 对结对伙伴的评价:这俩人一开始各编各的还好,到后面就开始吵,从头吵到尾,陆大胖,胡志汪,还好到最后是把代码敲出来了,不容易不容易. 小组结对编程的照片(QQ群截图) 项目中自己负责的部分 代码的综合整理,错误查找,合并以及博客的撰写. 个人贡献度划分 彭霖:胡智韬:陆大岳=3:3:4 相关过程的截图 生成题目类驱动类的

20172312『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结

20172312『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号 :20172315 20172318 姓名 :胡智韬 陆大岳 伙伴第一周博客地址: 对结对伙伴的评价:这俩人一开始各编各的还好,到后面就开始吵,从头吵到尾,陆大胖,胡志汪,还好到最后是把代码敲出来了,不容易不容易. 小组结对编程的照片(QQ群截图) 项目中自己负责的部分 代码的综合整理,错误查找,合并以及博客的撰写. 个人贡献度划分 彭霖:胡智韬:陆大岳=3:3:4 相关过程的截图 生成题目类驱动类的

结对编程—黄金点游戏WinForm单机版

本小游戏场景来自邹欣老师的<移山之道>一书: "阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫"黄金点"的游戏:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金

结对编程的优劣

结对编程项目,优化四则运算程序. 我的结对编程伙伴是白斌,我们在本周进行了结对编程并有所进展,也使我对于结对编程有了一些感触. 我认为结对编程既有好处也有不足之处.好处在于编程的同时就在复审,降低了出错的概率,提高代码质量,两人合作能有更强的解决问题的能力.比如在我们结对编程的过程中,我在写随机生成负号的程序里,一个if语句中少打了一个括号,使得负号无法正确生成,是白斌发现了这一点,使我及时改正了这个错误.如果是我一个人编程的话,我可能要花出几倍的时间来发现这个错误,结对编程时我的partner

软件工程网络15结对编程作业

Deadline: 2018-3-25 10:00PM,以提交至班级博客时间为准. 请在两周时间内完成结对编程练习,注意时间的合理安排. 参考来自http://www.cnblogs.com/xinz/p/7417960.html 题目要求: 1.改进现有代码 分析网络14部分现有程序代码(请选择其中一个) 个人博客地址1:http://www.cnblogs.com/weihui-01 ,源代码:https://coding.net/u/weh/p/software-testing/git 个

软件工程网络15结对编程作业(201521123062)

0.结对编程成员: 吴剑通博客地址:https://www.cnblogs.com/wjt960310/ 杨钧宇博客地址:http://www.cnblogs.com/GOB8023/ 码云地址:https://gitee.com/jmu201521123056/four_operations 源代码:https://coding.net/u/Belong033/p/java-third/git 原题目要求 http://www.cnblogs.com/happyzm/p/6472120.htm

结对编程初体验——代码复审

这一次和室友结对编程,第一项任务就是互看代码.想到上一次这样认真看她的C++代码,是一年前学程序设计这门课时,帮她人工debug.虽然都是从头到尾认真读代码.通逻辑,感觉却是不同的,之前的关注点是bug在哪,而现在却是带着任务的,要关注代码核查表中的项目.结果看着看着,总感觉自己在找茬dbq 回归正题↓ 编译环境:Dev-C++ 5.9.2 程序语言:C++ (一)优点: 能发现的优点,大多都是自己的缺点 1.代码可读性强. 通过详细的注释,即便是我们两个的个人项目使用的不是同一种语言,我看懂她

结对编程 By:李畅&amp;李雅楠

开始.结束与开始 by李畅 李雅楠 看似漫长实则短暂的结对编程项目就这么结束了.细细回想起来,其中更有着点滴的感悟与体会.那么,让我们一切从头说起,慢慢回味其中的点滴. Part 1 初遇结对编程,对其中的点滴真的是可以说完全不了解.结对编程?如何去做?怎么去做?又会有什么结果?一切,起于未知. 而在从个人项目到结对编程项目转换的初始,就开始体会到结对编程项目的细微好处了.首先是相互之间的互看代码.(先例行感慨一下自己的搭档真的很厉害)在互看代码的过程中,我们开始了解对方的思路,开始明确对方的想