求一维数组最大子数组和判断溢出

一题目

一.实验要求

求一维数组最大子数组和

要求:1000个数以上,32位整数

二.设计思路

因为我们的程序一开始就可以运算1000个以上数的运算,最大个数为364,526,269,原因为找出。

这次实验主要目的是解决最大值溢出的问题,本来想输出这个溢出的数值,但没有实现,于是改为若溢出,则输出提示,并返回溢出的上一个最大值。

三.代码

 1 // ketang4.cpp : 定义控制台应用程序的入口点。
 2 //张世通 梁世豪
 3
 4 #include "stdafx.h"
 5 #include "iostream"
 6 using namespace std;
 7
 8
 9 /*确定求和存储数组元素*/
10 void Son(int father[],int length)
11 {
12     int MMAX=2147483580;
13     int max=father[0];
14     int add=0;                                                    //定义求和变量
15     int j;
16      for(int i=0;i<length;i++)
17      {
18         add=0;
19         for(j=i;j<length;j++)
20         {
21             add=add+father[j];
22             if(add>max&&add<MMAX)
23             {
24                 max=add;
25             }
26             else if(add>MMAX)
27             {
28                 break;
29             }
30         }
31         if(MMAX-max<father[j+1])
32         {
33             cout<<"结果超出最大表示范围,将输出上一个最大值:"<<endl;
34             break;
35         }
36      }
37         cout<<"最大子数组的和为:"<<max<<endl;
38 }
39
40 /*主函数*/
41 int main()
42 {
43     int length,num;                                                //定义原始数组长度length,求和存储数组长度num
44     cout<<"请输入数组元素个数:";
45     cin>>length;
46     int* father=new int[length];                                //定义原始数组
47     for(int i=0;i<length;i++)
48     {
49         father[i]=(rand()%1000)*1000000;
50     //    cout<<father[i]<<"    ";
51     }
52     cout<<endl;
53
54
55     Son(father,length);
56     delete []father;
57     return 0;
58 }

四.运行截图

五.实验总结

虽然这次实验要求的没有像预期那样让每个功能都实现,但是这次实验让我了解了如果数据过多数值过大,会对程序造成什么样的影响,要想解决溢出问题还要继续学习,多实践,现在才知道这是一个不可忽视的问题,在以后的编程中非常值得注意。

六.合影

时间: 2024-10-21 14:01:33

求一维数组最大子数组和判断溢出的相关文章

结对开发_求一维数组最大子数组和判断溢出

题目 求一维数组最大子数组和 要求:1000个数以上,整数 二.设计思路 最大子数组很好找到,但是子数组和的溢出问题很难解决. 经过不断的思考,我得出了结论: 溢出是程程序设计者设计时的不足所带来的错误.所以设计者要在编码时便高度警惕,预防溢出的发生,这才是最本质的解决问题的方法.就本题而言,我们设置了元素最大个数,以及其它输入要求,尽量避免溢出的发生.1000个数相加可以实现,但非要取1000个最大的数相加,那样的计算没有意义,不会在我们的生活学习中出现,这属于科研问题,交给大神们来解决吧.

求一维循环数组最大子数组的和

结对成员:信1201-1班 于海洋   袁佩佩 一.题目与要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 同时返回最大子数组的位置. 二.设计思路 利用之前的返回一个整数数组最大子数组的和程序的思路,不过这里将数放到一个链表里,首尾相连,来求最大子数组的和. 三.源

结对开发——一维数组最大子数组判断溢出

一 题目 求一维数组最大子数组和 要求:1000个数以上,整数 二.设计思路 最大子数组很好找到,但是子数组和的溢出问题很难解决. 经过不断的思考,我得出了结论: 溢出是程程序设计者设计时的不足所带来的错误.所以设计者要在编码时便高度警惕,预防溢出的发生,这才是最本质的解决问题的方法.就本题而言,我们设置了元素最大个数,以及其它输入要求,尽量避免溢出的发生.1000个数相加可以实现,但非要取1000个最大的数相加,那样的计算没有意义,不会在我们的生活学习中出现,这属于科研问题,交给大神们来解决吧

求首位相连一维数组最大子数组的和

结对成员: 朱少辉:主要负责代码编写 侯涛亮:主要负责程序测试 题目:一个首尾相接的一维整型数组,其中有正有负,求它的最大子数组并返回它的位置. 思路:在求一维子数组的基础上,先输入一个含有N个数的一维数组,将此数组向后平移N个使数组长度变为2N个,前N个和后N个值相等.再求这长度为2N的数组最大子数组之和,也就是求从第i个(i=0,1,2..n-1)到第i+n(不包含i+n)个中求最大的子数组和.这样会从0-N-1产生产生N个最大子数组的和,把这N个值存到另个数组中,求出最大值即为首位衔接一维

求一维循环数组最大子数组

设计思路: 一维循环数组:一维整数组头跟尾相连形成一个环. 问题解决方案:将一个一维数组扩大两倍,求新的数组的最大子数组即可. import java.io.IOException; public class xunhuanshuzu { public static void main(String[] args)throws IOException{ int []a= {23,-12,234,-234,123,2,0,1,-1,-34}; int n=a.length; int []b=new

软件工程个人作业04(求数组最大子数组的和)

题目:返回一个整数数组中最大子数组的和. 要求:输入一个一维整形数组,数组里有正数也有负数.一维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 程序设计思想:程序中使用到一个用来求数组的最大子数组和的函数,这里可以将原数组的前n-1项加到数组的后面,形成一个新的数组,这样就可以求这种首尾相连的数组的最大子数组和了. 源代码: public class zishuzu {     /**     * @param

环一维数组最大子数组问题

设计思路: 一个含有n个数值的一维环数组.可以把他分为n个一维数组,分别求出这n个以为数组的最大值.然后他这些值放在另一个一维数组中.再比较,求出最大子数组. 代码: package 整数环数组最大子数组的和; import java.util.Random; import java.util.Scanner; public class one { public static void main(String[] args) { // TODO 自动生成的方法存根 System.out.prin

循环一维数组最大子数组

结对人员:张世通 梁世豪 一.题目 返回一维数组中最大子数组的和 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 同时返回最大子数组的位置. 求所有子数组的和的最大值. 要求时间复杂度为O(n) 二.设计思路 1.在上一次求一维数组最大子数组的问题上,进行拓展,继续使用类似的求和方法 2.通过定义变量start,fin

求二维数组最大子数组的和

结对开发成员:朱少辉,侯涛亮 朱少辉:负责程序分析,代码编程 侯涛亮:负责代码复审和代码测试 设计思路: 根据求一维子数组的最大子数组和的列子,把二维数组分解成若干个一维子数组,如m行n列的数组可分为(m+1)*m/2个子数组,在求每个一维数组的最大子数组和,把这些和放入一个数组中,求这个数组的最大值就是二维数组最大子数组的和.这种算法的时间复杂度为o(n^3). 代码: #include<iostream> using namespace std; void main() { int m,n