zoukankan      html  css  js  c++  java
  • 合作项目4

    结组成员:信1201-1柴珏辉 信1201-2邓锐

    一、要求

    1、题目:

    返回一个二维数组中最大子数组的和。

    2、要求:

    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。
    同时返回最大子数组的位置。
    求所有子数组的和的最大值。要求时间复杂度为O(n)。
    3、结对开发要求: 
    两人结对完成编程任务。
    一人主要负责程序分析,代码编程。
    一人负责代码复审和代码测试计划。
    发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。   

    二、设计思路

    我们合作项目3中的代码中已实现子数组定位。首尾相邻方面,在这个数组最后一个元素后面重复一遍数组以实现环状数组,计算求和时,数组长度为n,子数组第一个数的位置为a(a<=n),第二个数的位置为b(a<=b<a+n),以实现不重复。

    三、程序代码

    复制代码
     1 #include<iostream.h>
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<time.h>
     5 #define N 30
     6 int qiuhe(int a[],int i,int j) //数组求和
     7 {
     8     int he=0,b;
     9     for(b=i;b<=j;b++)
    10     {
    11         he=he+a[b];
    12     }
    13     return he;
    14 }
    15 void show(int a[],int i,int j )//显示方式
    16 {
    17     int b;
    18     for(b=i;b<=j;b++)
    19     {
    20         if(b%20==0)
    21         {cout<<endl;}
    22         cout<<a[b]<<" ";
    23     }
    24     cout<<endl;
    25 }
    26 void main()
    27 {
    28     int yuan[N*2];  
    29     int i,j,ra,p=0,shu1,shu2,max;
    30     srand((unsigned)time(NULL));
    31     for(i=0;i<N;i++)
    32     {
    33         yuan[i]=(rand()%20)-10;
    34         yuan[i+N]=yuan[i];      //重复生成一遍数组
    35     }
    36     i=0;
    37     j=0;
    38     max=yuan[0];
    39     shu1=0;
    40     shu2=0;
    41     for(i=0;i<N;i++)             //找最大值
    42     {
    43         for(j=i;j<i+N;j++)
    44         {
    45             if(qiuhe(yuan,i,j)>max)
    46             {
    47                 max=qiuhe(yuan,i,j);
    48                 shu1=i;
    49                 shu2=j;
    50             }
    51         }
    52     }
    53     cout<<"原数组:";
    54     show(yuan,0,N-1);
    55     cout<<"最大子数组:";
    56     show(yuan,shu1,shu2);
    57     cout<<"从第"<<shu1+1<<"个数到第";
    58     if(shu2>N-1)
    59     {
    60         cout<<shu2+1-N;
    61     }
    62     else
    63     {
    64         cout<<shu2+1;
    65     }
    66     cout<<"个数,形成的子数组和最大"<<endl;
    67     cout<<"最大值:";
    68     cout<<max<<endl;
    69 
    70 }
    复制代码

    截图:

    四、测试

    1.数组数量 1000

    2.数据大小yuan[i]=(rand()%2000)-1000

    五、心得体会

    因为项目3实现了定位,这次就容易些。合作越来越默契。

    结组成员照片:

  • 相关阅读:
    java jdk 安装后目录下没有 jre
    解决leader-line生成的svg线不能被html2canvas转成图片问题
    css 计数实现目录索引
    前端架构入门
    js 尺寸信息
    阿里云25端口被封,换465端口发送
    appache官网下载 httpClient
    oc基础:类的定义
    指针的地址(地址的地址)
    0 ‘与‘’、 ‘0’
  • 原文地址:https://www.cnblogs.com/boluoland/p/4376449.html
Copyright © 2011-2022 走看看