课堂练习(数组结对开发)

合作过程:

上次设计的思路和编程语言的不同,通过沟通讨论统一思想决定使用java进行编程,陈鹏负责编程,李国帅负责进行代码的审查和代码的测试。

 设计思路:

设定三个变量,max是(子数组中的和的最大值,初始值为array[j])、result1(当前子数组的和,初始值为array[j]);

先让用户自己设定数组的长度,之后输入数组(输入的数组进行是否全为负数的判断);

在遍历之前增添一个for循环进行首尾相接;

之后在从数组第一位开始遍历数组, max=max+array[i],若result<0,则令max=0;若max>result,则result=max;

最后当循环运行结束后,输出最后result的值。

遇到的问题:

让初始值为arrary[0]时第一位数值输入时不能为负数;

当全为负数时输出的最大数值为几个负数的和;

源代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

package shuzhi;

import java.util.Scanner;

public class shuzuzhi {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Scanner in=new Scanner(System.in);

        System.out.println("请输入数组长度:");

        int n=in.nextInt();

        int array[]=new int[n];

        int result = 0;

        boolean bool=false;

        System.out.println("请输入相应的整数:");

        for(int i=0;i<n;i++)

        {

            array[i]=in.nextInt();

        }

        for(int i=0;i<n;i++)

        {

            if(array[i]>0)bool=true;

        }

     //判断是否全为负数  

       

    if(bool)//不全为负数

      {    

         //圈的循环

        for(int j=0;j<n;j++)

        {

         int max=array[j];

         int result1 =array[j];

           for(int i=0;i<n-j;i++)

            {

              max=max+array[i];

              if(max>result1)

              {

                result1=max;

              }

              if(max<0)

              {

               max=0;

              }

            }

           result=result1;

          }

        }

        else//全为负数

        {

            int max=array[0];

            for(int i=1;i<n;i++)

            {

                if(max<array[i])

                    max=array[i];

            }

            result=max;

        }

        System.out.print("子数组的最大值为:"+result);

    }

}

截图: 

总结:

输入初始值时要明白初始值是否需要改变,利用for循环时确定范围是否正确;

时间: 2024-10-13 21:01:50

课堂练习(数组结对开发)的相关文章

3月31号周二课堂练习:结对开发----求二维数组组成的矩阵中子矩阵的最大值二

一.题目要求 1.1输入一个二维整形数组,数组里有正数也有负数. 1.2二维数组首尾相接,象个一条首尾相接带子一样. 1.3数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.4求所有子数组的和的最大值.要求时间复杂度为O(n). 二.结对要求 2.1两人结对完成编程任务. 2.2一人主要负责程序分析,代码编程. 2.3一人负责代码复审和代码测试计划. 2.4发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 三.设计过程 上次已经算过二维数组中

课堂练习之结对开发项目思想总结

一.思想过程 老师课上让我们结对合作开发一个小程序,起初思想比较混乱,但在与雪东交流后一个想法渐渐浮现了出来,但在循环控制上仍然存在着缺陷.今天是满课的,所以我本打算在晚上自习的时候尝试去理清自己的思路,再与雪东进行交流.谁知在我刚到自习室,他便拿着笔记本来找我探讨,而且他已经写出了自己的想法,不过可能比较笨拙,在数组数量变化时需要一次一次的去输入程序,所以我们的探讨从如何实现老师的问题便到了如何更好的去实现老师的问题,增加程序的可扩展性. 在此次合作中我们真的就像驾驶员和领航员一样,一台电脑,

3月27号周五课堂练习:结对开发----返回一个整数数组中最大子数组的和三

一.题目要求 1.1输入一个整形数组,数组里有正数也有负数. 1.2数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.3如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 1.4同时返回最大子数组的位置. 1.5求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 三.源代码 #include<iostream> #include<time.h> #include<conio

3月24号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和二

一.题目要求 1.1要求程序必须能处理1000 个元素: 1.2每个元素是int32 类型的: 1.3输入一个整形数组,数组里有正数也有负数. 1.4数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.5求所有子数组的和的最大值.要求时间复杂度为O(n). 二.源代码 #include<iostream> #include<time.h> #include<conio.h> #define N 100000 using namespace std; v

数组结对开发

题目: 返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 1. 设计思想 首先是用random产生随机数,可以产生政府混合,怎么求最大子数组,重点是2个思想:①在这个循环中,把前几个相加,看是否是正数.② 其次看(i+1)的和是否大于(i)的和. 根据这就可以用一个循环来进行计算.接下来就是考虑其他的问题,比如最大子数组的起始位置和最终位置.

软件工程课堂训练——结对开发之环数组最大和

一.题目及要求: 题目:返回一个整数数组中最大子数组的和 要求(新加):①如果数组A[0]...A[j-1]首尾相邻,允许A[i-1]...A[n-1],A[0]...A[j-1]之和最大:②同时返回最大子数组的位置. 结对人员:胡亚宝  焦燕 二.设计思路: 我们要解决两个问题:求出环数组中最大的子数组:并且定位出该子数组的位置,把它们的名称输出来.要解决这两个问题,我们从以下两个方面入手: ①求出最大子数组:将数组数值按顺序排好称为“一趟”,每求出一趟的最大子数组后,将第一个数值放到最后一个

软件工程课堂训练——结对开发之环状二维数组

一.题目及要求: 题目:返回一个整数数组中最大子数组的和 要求(新加):①输入一个二维整形数组,数组里有正数也有负数:②二维数组首尾相接,像一条首尾相接的带子一样. 结对人员:胡亚宝  焦燕 二.设计思路: 这个题目其实就是二维数组和环型数组的结合,要解决这个问题,将之前的两个问题融合一下即可. 首先解决求出二维数组中最大子数组的问题,然后沿用一维数组的方法,将第一列放到最后一列,在求出新的二维数组的最大子数组,依次求出各个二维数组的最大子数组. 三.部分源代码: 1 for (m=0;m<5;

体验结对开发的乐趣(5)--(首尾相连的二维数组求最大子数组和的问题)

结对伙伴:信1201-2班高扬.信1201-1班韩雪东 一.题目要求与设计思想 题目要求:在上一次的基础上把数组变为二维数组,然后首尾相接,形成连环,然后求和最大的子数组: 设计思想:一维数组首尾相连的问题已经得到解决,二位数组求和最大的子数组的问题也已经解决了,就是把这两个程序思想融在一起,然后在短短的时间内就完成了这次课堂项目. 二.源代码 1 // erweishuzuqiuzuida.cpp : Defines the entry point for the console applic

结对开发之返回一个二维整数数组中最大联通子数组的和

一.题目要求 输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和 二.解题思路 先对二维数组进行了重构,形成一个环状二维数组,然后再用求二维数组子矩阵最大和的方法求得最终结果. 三.程序代码 2 #include<iostream.h> 3 int main(int argc, char* argv[]