返回一个整数数组中最大子数组的和

                                              

设计思路 :原本打算利用指针创建数组,然后根据for语句一次求出各个数组的和,后来感觉

这样做太复杂,只能求助荣道,利用他的思路,直接计算各个数组的和,再与最大值比较。

  项目计划总结      
姓名: 张少朋   日期:2015/3/24  
         
  找突破口 设计思路 编程 总结心得
星期六 60分钟 20分钟 0 0
星期日 0 30分钟 30分钟 0
星期一 0   45分钟 10分钟

 代码:

#include<iostream>
#include<ctime>

using namespace std;

void main()

{

    int a[10];             

    int f;               

    int i, j, k;             

    int sum, max = -100;      

    int m, n;               



    cout << "请输入数值范围:";

    cin >> f;

    srand((unsigned)time(NULL));

    for (i = 0; i<10; i++)

    {

        a[i] = (rand() % 2 ? -1 : 1)*rand() % f;

        cout << a[i] << "   ";

    }

    cout << endl;



    for (i = 0; i<10; i++)

    {

        for (j = 0; j <= i; j++)

        {

            sum = 0;

            for (k = j; k <= i; k++)

                sum = sum + a[k];

            if (sum>max)

            {

                max = sum;

                m = j;

                n = i;

            }

        }

    }

    cout << "子数组的最大值为:" << max << endl;

    cout << "子数组是第" << m + 1 << "个数,到第" << n + 1 << "个数。" << endl;

    cout << "子数组是:";

    for (i = m; i <= n; i++)

    {

        cout << a[i] << "  ";

    }

    cout << endl;

}


截图结果:

个人总结:取的最大值没有在数组循环当中,m,n的取值为i,j。编程需要的是耐心,只有细节才能决定一切,不能只知道大概就以为自己学会了,引以为戒。

原文地址:https://www.cnblogs.com/helloalbert/p/4387763.html