• 数组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;
    }


  • 相关阅读:
    C#获取MAC地址
    C#洗牌
    删除前提示
    简单MD5加密
    读取EXCEL所有列名C#
    gridview二次加载样式丢失
    迅雷API接口(及示例演示)
    [转]Servlet过滤器介绍之原理分析
    [转]MySQL运行状态show status中文详解
    [转]如何修改mysql root密码
  • 原文地址:https://www.cnblogs.com/qinxian0/p/5323295.html
Copyright © 2020-2023  润新知