小组成员:安娜 王鑫楠

题目二:求整数数组中连续子数组和的最大值。

1、分析过程:

题目收到后,前五分钟设计算法,首先也想到是不是一次遍历可以解决,考虑了一下觉得难度有点大最后还是果断放弃。我刚开始的以思路是以子数组的长度作为第一层循环条件,即以2长度为例:比较a[0]+a[1],a[1]+a[2],......a[N-2]+a[N-1]的大小。安娜的思路是以数组的顺序为第一层循环条件,即以a[0]为例:分别比较a[0],a[0]+a[1],a[0]+a[1]+a[2],.....a[0]+...a[N-1]大小。最后我们选择了安娜的想法。

2、代码编写过程

前20分钟安娜“驾驶”,我来“导航”,然后交换角色。

代码如下:

 1 #include<stdio.h>
 2 #define N 5
 3
 4 void sumarray(int a[])
 5 {
 6     int i,j;
 7     int locl=0,loch=0;
 8     int maxsum=a[0];
 9     int sum;
10     for(i=0;i<N;i++)
11     {
12        // sum=a[i];
13         for(j=i;j<N;j++)
14         {
15             if(i==j)
16             {
17                 sum=a[i];
18             }
19             else
20             {
21                 sum=sum+a[j];
22             }
23             if(maxsum<sum)
24             {
25                 maxsum=sum;
26                 locl=i;
27                 loch=j;
28             }
29            //sum=sum+a[j+1];
30         }
31     }
32     printf("最大值:%d\n",maxsum);
33
34     printf("子数组下标:%d %d\n",locl,loch);
35 }
36 void main()
37 {
38     int a[N]={1,2,3,4,5};
39     sumarray(a);
40 }

运行结果:

3、测试过程:

(1)第一次运行发现和过于大,发现是大意的错误,将sum=sum+a[i]写成sum+=sum+a[i]。

(2)用int a[N]={-2,-3,-4,-5,-2};测试,结果为:

发现是 locl,loch未赋初值。修改为int locl=0,loch=0。

(3)a[j+1处会数组溢出,虽然不影响测验结果的正确性(vc++6.0的环境下对溢出的数组成员有赋初值),但是换个运行环境可能就会出错,最后加了个if else语句将a[j+1]用

a[j]代替。

    for(i=0;i<N;i++){sum=a[i];for(j=i;j<N;j++){if(maxsum<sum){ maxsum=sum;locl=i;loch=j;}sum=sum+a[j+1];  }}

转载于:https://www.cnblogs.com/wangxinnan/p/3592174.html

结对开发项目:求整数数组中连续子数组和的最大值相关推荐

  1. 返回一个数组的连续子数组和的最大值

    package wodeshiyao;import java.util.Scanner;public class lalala {static Scanner scan=new Scanner(Sys ...

  2. 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)

    一.题目及题目要求 题目:返回一个整数数组中最大子数组的和. 要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果 ...

  3. 结对开发——返回一个整数数组中最大子数组的和

    一.题目要求 1.输入一个整型数组,数组里有正数也有负数. 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 ...

  4. 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)

    题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为 ...

  5. 关于求已知整数数组的连续子数组的最大和的方法 ——基于一维数组的循环,甚至推广到二维情况上...

    日期:2019.3.21 博客期:049 星期四 先二话不说,先交代码,今天训练的内容是"这个整数数组是允许开头和结尾结合在一起的",大家的思路都是扩大数组内容,就是将读入的数据存 ...

  6. 《团队开发一(求一个数组的连续的子数组之和的最大值)》

    <团队开发一(求一个数组的连续的子数组之和的最大值)> (1)设计思想:一般的,求一个数组的最大子数组之和即是按数组顺序依次让前几个数的和与下一个数进行比较,设一变量来装每次比较后的较大的 ...

  7. 返回一个二维整数数组最大联通子数组的和(思路)

    返回一个二维整数数组最大联通子数组的和(思路) 题目: 输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值. 总体思路: 返回一个最大的二维联通子数组的思路总体上和二维首尾子数组相 ...

  8. 数组的连续子数组最大和(首尾相连)

    题目: 求一个循环数组的连续子数组的最大和. 解法: <编程之美>上给出一种方法: 1)求[0, n-1]的最大和: 2)如果跨过了n-1,则计算以n-1为尾部的最大子数组[i, n-1] ...

  9. Java:获取数组中的子数组的多种方法

    Java:从一个数组中创建子数组 使用Arrays.copyOfRange函数 Arrays.copyOfRange支持:boolean[], byte[] ,char[],double[],floa ...

最新文章

  1. shell处理curl返回数据_shell神器curl用法笔记
  2. 一篇文章带你解析,乐观锁与悲观锁的优缺点
  3. 等价关系和等价类_确定Java等价性的新时代?
  4. 死锁终结者:顺序锁和轮询锁!
  5. (一)KitJs瀑布流组件特点
  6. Java中Spring中的方法加上try catch后事务管理器失效无法回滚的情况
  7. 谎言被揭露后,你们的时机才会到来!
  8. 强悍的 Linux —— 文件解压与解压
  9. 微信小程序个人笔记!
  10. 最近尝试移植了一下java.awt/javax.swing
  11. 红色警戒2修改器原理百科(四)
  12. 世界知名游戏公司简介(国内,欧美,日韩)
  13. tcl科技云计算机,科技点亮生活,TCL定义智慧科技新生活
  14. 计算机d盘hlddz是啥,tempest_qqgametempestj是会么文件,可以删除么
  15. PyTorch安装教程(带图文)
  16. 学习笔记 JavaScript 动画 加速
  17. 【教程】扫描识别工具Dynamic Web TWAIN使用教程:条码读取器(上)
  18. K-Means聚类算法(matlab)
  19. mixed content the site was loaded over a secure connection but the file at was loaded over an insecu
  20. windows系统安装jdk11

热门文章

  1. 这群理想主义者,在腾讯用10年做到了畅销榜第一
  2. Cocos游戏引擎3D特效全新升级 更流畅更炫酷
  3. 虚拟机磁盘扩容parted
  4. 字体rem通用基本设置
  5. seconds_behind_master监控复制推延的不足及pt-heartbeat改进方法
  6. 你可能不知道的小知识-bug为什么叫bug
  7. ubuntu18系统搭建ftp服务器详解
  8. 机器学习入门KNN近邻算法(一)
  9. python-sdk-demo的打包
  10. 如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)