zoukankan      html  css  js  c++  java
  • 数组2——数组首尾相接,求最大子数组

    结对开发,我和秦冰超20132900,博客地址 http://www.cnblogs.com/qinxian0/

    设计思路:
      输入数组 1 -4 -2 7 
      a[0]=sz[0];1
      a[1]=max(a[0]+sz[1],sz[1]);-3
      a[2]=max(a[1]+sz[2],sz[2]);-2
      a[3]=max(a[2]+sz[3],sz[3]);7

      max(a[0],a[1]...a[n])

      同样要用到数组1的思想,由于可以首尾相连,就转换成分别求{1,-4,-2,7}{-4,-2,7,1}{-2,7,1,-4}{7,1,-4,-2}这几个数组的最大子数组,再求各子数组的和。

    #include<iostream>
    #include <algorithm> 
    #include<cstdio>
    #include<vector>
    using namespace std;
    
    int main()
    {
        int i,j, szgs,szgs1, maxsum;
        int sz[100]  , a[100];//最大数组
        cout << "请输入数组元素个数:";
        cin >> szgs;
        cout << "请输入数组元素:";
        for (i = 0; i < szgs; i++)
        {
            cin >> sz[i];
        }
        a[0] = maxsum = sz[0];
        szgs1 = szgs;
        if (szgs>0)
        {
            for (j = 0; j < szgs; j++)
            {
                for (i = j + 1; i < szgs1; i++)
                {
                    a[i] = max(a[i - 1] + sz[i], sz[i]);
                    maxsum = max(maxsum, a[i]);
                }
                sz[szgs1] = sz[szgs1-szgs];
                a[j+1] = sz[szgs1-szgs+1];
                szgs1 =szgs1+ 1;
            }
        }
        cout << "最大子数组的和为:" << maxsum << endl;
    }

     

  • 相关阅读:
    08简单推导:手机尾号评分
    07简单推导:生日蜡烛
    06普通推导
    05简单推导:猴子吃桃
    简单推导
    03map用法
    List题目
    02List的使用
    01基础知识
    HDU
  • 原文地址:https://www.cnblogs.com/-beauTiFul/p/5322350.html
Copyright © 2011-2022 走看看