zoukankan      html  css  js  c++  java
  • 求极大子数组

    设计思想
        判断前一个数是否为正,是正则加,是负则判断它加下一个数是否为正。若正则加,若负,则循环以上步骤,进行判断。
     
     
     
    #include<iostream>
    using namespace std;
    int max(int a,int b)
    {
        if(a>b)
        {
           return a;
        }
        else
        {
           return b;
        }
    }
    int maxsum(int a[], int n)
    {
        int i;
        int maxsofar = 0;  //maxsofar记录到目前为止的的最大值
        int maxendinghere = 0; //maxendinghere记录从当前位置开始往前几个连续的数的和的最大值
        for (i = 0; i < n; i++)
        {
            maxendinghere = max(maxendinghere + a[i], 0);
            maxsofar = max(maxsofar, maxendinghere);
        }
        return maxsofar;
    }
    int main()
    {
        int n, i=0;
        cout<<"请输入个数:";
        cin>>n;
        cout<<"请输入数组:";
        int a[100000]={0};
        for(i=0;i<n;i++) 
        {
            cin>>a[i];
        }
        int max=maxsum(a, n);
        cout << "最大子数组的和为:" << max << endl;
        return 0;
    }
    

      

     

  • 相关阅读:
    git 去除对某个文件的版本控制
    10:08 小记
    写读书笔记
    恢复已删除且已添加至暂存区的文件
    第七周
    第六周
    软件测试
    短信获取
    Android-8
    增删改查
  • 原文地址:https://www.cnblogs.com/4EY4EVER/p/9752259.html
Copyright © 2011-2022 走看看