首页 > 其他 > 详细

作业3

时间:2018-10-14 16:06:53      阅读:180      评论:0      收藏:0      [点我收藏+]

1题目:返回一个整数数组中最大子数组的和。

2要求

           要求程序必须能处理1000 个元素;

           每个元素是int32 类型的,出现子数组之和大于整型表示的最大范围会出现什么情况;

           输入一个整形数组,数组里有正数也有负数。

           数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

        求所有子数组的和的最大值。要求时间复杂度为O(n)。

3思路: 

           处理1000个元素的问题,将数组的长度设为1000,其中的每一个元素都是随机生成,因为这道题目重点是溢出问题,所以将它们设的值都比较大;

           将它们都设为int型,超过表示范围时,系统会自动转化成负值,判断后将显示溢出,计算出所有子数组的和比较找出最大子数组。

4程序代码:

#include "stdafx.h"
#include "stdlib.h"
 int _tmain(int argc, _TCHAR* argv[])
 {
     int i,j,a[1000]; 
     int Sum,Max;
     printf("随机生成的数组为:\n");
     for(j=0;j<1000;j++)
     {
         a[j]=rand()+100000000;
         printf("%d\t",a[j]);
     }
 
     Max = a[0];  
     
     for(i=0;i<1000;i++)  
     {
         Sum = 0;             
         for(j=i;j<1000;j++)  
         { 
             Sum =Sum+ a[j];
             if(Sum<=0)
             {
//printf("溢出!"); Sum=0; } if(Sum > Max) { Max =Sum; } } } return 0; }


5运行截图:
技术分享图片

   6心得:编程不行c语言基础差,代码几乎是看着园里学长的作业一点一点理解(copy)过来的,不过这一次的实验我们在上课联系的基础上写的,程序自动生成1000个数,但是求得的结果不正确,最后设定如果sum<=0,则输出溢出。

作业3

原文:https://www.cnblogs.com/eR1nneungs0rt/p/9786043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!