码迷,mamicode.com
首页 > 其他好文 > 详细

课堂练习2

时间:2015-04-02 17:59:00      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

1.设计思想

    第一次求子数组最大和的程序存储和的时候用的二维数组不能够实现时间复杂度为O(n),然后也没什么新的思路,就从网上搜了一种算法。

    该算法是构造一个函数来返回子数组的最大和,当前面的几个数,加起来后,b<0后, 把b重新赋值,置为下一个元素,b=a[i]。 当b>sum,则更新sum=b; 若b<sum,则sum保持原值,不更新。

2.源程序

技术分享
#include <iostream>
using namespace std;
#define N 15

int max(int *a)
{
    int sum=0,b=0;
    for(int i=0;i<N;i++)
    {
         if(b<0)
        {
             b=a[i];
        }
        else
        {
            b+=a[i];
        }
        if(sum<b)
        {
            sum=b;
        }
    }
    return sum;
}


void main()
{
    int a[N];
    cout<<"生成的数组为:";
    for(int i=0;i<N;i++) //生成数组里的随机数
   {
        a[i]=rand()%100-50;
        cout<<a[i]<<" ";
    }
    cout<<endl;

    cout<<"最大数组的和为:"<<max(a)<<endl;

}
技术分享

 

3.结果截图

技术分享

技术分享

4.总结

  很遗憾的最后没有输出子数组,对于子数组的输出没有什么思想,也从中学到了一种新的算法,希望再经过思考能够将这个问题解决的更好。

5.工作照

技术分享

陈杰:主要进行博文的总结等

孟祥娟:主要负责程序的编写和运行测试

课堂练习2

标签:

原文地址:http://www.cnblogs.com/chenjie00/p/4387416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!