• 测试题目
    求整数数组的子数组之和的最大值。
  • 题目分析
    首先是明确题目的目的:求最大值;其次是考虑子数组求和。这里将求最大值写成一个单独的函数。主函数未测试函数。这里用到了二重循环,时间复杂度为N^2.
  • 源代码分析
    #include"stdio.h"#define MAXSIZE 100/*int Max(int num[],int length)
    {int max=num[0];//int n;int sum=0;int flag=0;for(int j=0;j<length;j++){if(max<num[j])max=num[j];        }for(int k=0;k<length-1;k++){if(max<(num[k]+num[k+1]))max=(num[k]+num[k+1]);}for(int m=0;m<length-2;m++){if(max<(num[m]+num[m+1]+num[m+2]))max=(num[m]+num[m+1]+num[m+2]);}for(int n=0;n<length-3;n++){if(max<(num[n]+num[n+1]+num[n+2]+num[n+3]))max=(num[n]+num[n+1]+num[n+2]+num[n+3]);}for(int z=0;z<length-4;z++){if(max<(num[z]+num[z+1]+num[z+2]+num[z+3]+num[z+4]))max=(num[z]+num[z+1]+num[z+2]+num[z+3]+num[z+4]);}if(max<(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]))max=(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]);return max;
    }*/int Max(int num[],int length){int max=num[0];if(length<=0){printf("数组个数为零或负数,错误,默认MAX设为0");return 0;}for(int k=0;k<length;k++){if(num[k]==-858993460){printf("数组含为NULL,错误,默认MAX设为0");return 0;}}for(int i=0;i<length;i++){int sum=0;for(int j=i;j<length;j++){sum+=num[j];if(max<sum)max=sum;}}return max;}
    main()
    {//int num[]={-10,-12,1,-1,9,10};//int length=6;int num[MAXSIZE];int length;printf("输入数组个数:");scanf("%d",&length);for(int x=0;x<length;x++)scanf("%d",&num[x]);/*for(int i=0;i<6;i++)printf("%d  ",num[i]);*/printf("\n");printf("MAX:%d\n",Max(num,length));
    }

    这里我进行了一些异常情况的处理






  • 上课思路
  • 扩展-线性实现
    如何利用线性实现,首先要对整形数组进行分析:
    1、零对于和没有影响。
    2、数组是全负的情况(若只有负数和零,则max=0)

    for(int i=0;i<length;i++)
    {if(max<num[i])max=num[i];
    }

    3、数组是全正的情况(含0)

    for(int i=0;i<length;i++)
    {if(max<num[i])max=num[i];
    }

    4、有正有负的情况
         首先是要顺序寻找第一个大于零的整数,记录下来数组下标,然后接着寻找下一个负数,得到负数段,也求和,得到一段正数段,求和,按照这种方法遍历整个数组。
         对这些正数段与负数段进行判断与求和,从而实现求出最大者。

  • 线性实现
         待下回分解!

转载于:https://www.cnblogs.com/feelwell/p/3592559.html

【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)相关推荐

  1. 编程之美-2.14-求数组的子数组之和的最大值

    这个以前写过,见求数组的最长子数组之和的最大值 这里说一下后面扩展题目. 1. 简述 1) 如果数组首尾相连,即允许找到一组数字(A[i],···,A[n-1], A[0],···, A[j]),请使 ...

  2. 求数组的子数组之和的最大值

    一个有N个整数元素的一维数组( A[0], A[1], ... , A[n-2], A[n-1]),子数组之和的最大值是什么?(要求子数组的元素是连续的) 例子:有数组( -2, 5, 3, -6, ...

  3. 算法-求数组的子数组之和的最大值

    一个一维int数组,这个数组有很多子数组,那么子数组之和的最大值是什么呢? 思考 1.题目说的子数组是连续的: 2.题目只需要求和,并不需要返回子数组的具体位置: 3.数组的元素是整数,所以数组可能包 ...

  4. 编程之美 2.14求数组的子数组之和的最大值

    对于一个有N个元素的数组,a[0]~a[n-1],求子数组最大值. 如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6. ...

  5. Programe_Of_Beauty:2.14 求数组的子数组之和的最大值

    问题:一个有N个整数元素的一维数组,那么求子数组和的最大值. 分析:首先我们明确问题,子数组是联系的,不用返回元素的位置,元素是整数,可能为正,负或0.我们来看看最经典的解法:a[0],a[1]-a[ ...

  6. 编程之美2.14 求数组的子数组之和的最大值

          这是一个在面试中出现概率很高的一道题目,就拿我来说吧,面试了5家公司中,两家公司问了这道题目,可见,这道题目是非常经典的.       解题思想也不是很难,我熟悉的有:两种解题办法:   ...

  7. 求数组的子数组之和的最大值IV

    在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数 ...

  8. 编程之美-求数组的子数组之和的最大值方法整理

    [试题描述] 方法一: 上面这个算法的时间复杂度为O(n^3),改进后如下: 此时算法的时间复杂度为O(n^2) 方法二:时间复杂度O(nlogn) 方法三:时间复杂度O(n) 改进一下,可以得到空间 ...

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

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

最新文章

  1. 删除数据库中与同步数据冗余的数据(多对多)
  2. 设计模式 — Overview
  3. 资深算法工程师万宫玺:Java工程师转型AI的秘密法宝——深度学习框架Deeplearning4j | 分享总结
  4. 苹果系统从零开始--MAC OS X 教程1 -- Finder
  5. Yii 数据库重连告别General error: 2006 MySQL server has gone away
  6. 职场透视:我们都是猪八戒?
  7. lintcode-514-栅栏染色
  8. Java最大公约数和最小公倍数的求法(辗转相除法)
  9. nodejs 任务调度bull 测试解析
  10. 软件测试测试用例编写 不超过7步骤_软件测试(功能、接口、性能、自动化)详解...
  11. 热力地图高德_《高德地图》城市热力图开启查看方法
  12. 云端软件关闭的原因是什么?
  13. python pytz模块_python pytz
  14. 个人永久性免费-Excel催化剂功能第21波-Excel与Sqlserver零门槛交互-执行SQL语句篇...
  15. Jenkins的制品管理
  16. [运放滤波器]3_反相同相比例放大电路_Multisim电路仿真
  17. CryEnging5.5源码+编辑器完全编译(2018-9-30)
  18. 前端vue使用vue-socket.io与socket.io-client与后台使用netty-socketio建立实时通信
  19. 深度强化学习落地方法论(5)——状态空间篇
  20. 2.yolov5目标监测-实践部分

热门文章

  1. Python 用for循环实现猜数字游戏
  2. Java并发编程:volatile关键字解析(转载)
  3. h5页面嵌入android app时遇到的问题
  4. Nhibernate3.3.3 GA使用初探
  5. 谈谈Java虚拟机——Class文件结构
  6. 距离大厂的安全体系建设,你还有三个“不够”
  7. 一本关于HTTP的恋爱日记
  8. 技术人必看:15张图对比高效与瞎忙的区别!
  9. package.json和package-lock.json的区别
  10. Apache 更改80端口