zoukankan      html  css  js  c++  java
  • 求首位相连一维数组最大子数组的和

    结对成员:

    朱少辉:主要负责代码编写

    侯涛亮:主要负责程序测试

    题目:一个首尾相接的一维整型数组,其中有正有负,求它的最大子数组并返回它的位置。

    思路:在求一维子数组的基础上,先输入一个含有N个数的一维数组,将此数组向后平移N个使数组长度变为2N个,前N个和后N个值相等。再求这长度为2N的数组最大子数组之和,也就是求从第i个(i=0,1,2..n-1)到第i+n(不包含i+n)个中求最大的子数组和。这样会从0-N-1产生产生N个最大子数组的和,把这N个值存到另个数组中,求出最大值即为首位衔接一维子数组的最大值。该算法的时间复杂度为o(n^2)。

    代码:

    #include<iostream>
    #include<cmath>
    using namespace std;
    void main()
    {
        int a[25000],i,j,n,MaxSum,k,m,h,p;
        int f=0;
        int b[10],d[10];
        
        cout<<"请输入数组中数字的个数"<<endl;
        cin>>n;
        cout<<"请输入数组"<<endl;
        for(i=0;i<n;i++)
        {
            cin>>a[i];
        }
        for(i=n;i<2*n;i++)
        {
            a[i]=a[i-n];
        }
        cout<<endl;
        
       
     
      for(i=0;i<n;i++)
      {
          k=0;
          MaxSum=0;
          h=i;
          for(j=i;j<i+n;j++)
          {
            
            k += a[j];
            if(k > MaxSum)
              { 
                  MaxSum = k;
                  h=j;
               }
      
            if(k < 0)
              {
                  k = 0;
              }
          }
           d[i]=h;
           b[i]=MaxSum;
         
      }
      int c=b[0];
        m=0;
        h=0;
      for(i=1;i<n;i++)
      {
          if(c<=b[i])
          {
              c=b[i];
              m=i;
              h=d[i];
          }
      }
      p=h-n+1;
       if(p<=0)
       {   p=n;}
       cout<<"从第"<<m+1<<"个到第"<<p<<""<<endl;
       cout<<"最大子数组为"<<endl;
       for(i=m;i<h+1;i++)
       { cout<<a[i]<<" ";}
       cout<<endl;
       cout<<"最大子数组之和为"<<c<<endl;
      
    }

    截图

    总结:这次的程序是上次程序的进化,具体思路还是一样的。由此可见许多程序的算法都是有关联的,我们要学会继承和创新。此外结对开发过程中,队友之间的配合,沟通,交流和信任也是十分重要的。通过几次的合作我们都有了很大的进步。

  • 相关阅读:
    Windows 之 CMD命令
    关于生sql中的空值
    电商物流仓储WMS业务流程
    VS 在代码中括号总是跟着类型后面
    DataTable的Select()方法
    sqlserver 系统表芝士
    CodeMix入门基础知识
    DevExpress v18.1新版亮点——CodeRush for VS篇(二)
    DevExpress v18.1新版亮点——CodeRush for VS篇(一)
    DevExpress v18.1新版亮点——Data Access篇
  • 原文地址:https://www.cnblogs.com/bingoing/p/4421671.html
Copyright © 2011-2022 走看看