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

    结对开发我的队友王春帆,学号20132902博客地址 http://www.cnblogs.com/-beauTiFul/

    设计思路:
      输入数组 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;
    }


  • 相关阅读:
    js截取字符串区分汉字字母代码
    List 去处自定义重复对象方法
    63. Unique Paths II
    62. Unique Paths
    388. Longest Absolute File Path
    41. First Missing Positive
    140. Word Break II
    139. Word Break
    239. Sliding Window Maximum
    5. Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/qinxian0/p/5323295.html
Copyright © 2011-2022 走看看