zoukankan      html  css  js  c++  java
  • 首尾相接的数组(环)-最大子数组

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

    结对开发人员:朱少辉,侯涛亮

    二 设计思路:设这个数组为a[n],那么扩大数组范围,使之为a[2*n],将a[0]~a[n-1]的值赋给a[n]-a[2*n-1],那么就相当于从第i个(i=0,1,2..n-1)到第i+n(不包含i+n)个中求最大的子数组,这时可以用到求一维数组(不是环)最大子数组动态规划的思想求解,每求得一个最大值进行比较,最后可求得最大子数组。至于求位置即最大子数组下标,可以附设一个指针j指向最大子数组末尾,指针每回溯一次,就令最大值max减去a[j],直到max值为0,就能求得最大子数组的首部下标。

    三 代码

    #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;
      
    }

    四 截图

    五 总结反思

           在这次结对开发中,我和伙伴相互思考设计思路,然后交流意见,达成了设计思路的共识。这样的开发流程,不仅促进了我们之间交流,而且提高了我们的编程能力,可见团队合作的重要性。

  • 相关阅读:
    Android自定义之ScrollView下拉刷新
    android Viewpager取消预加载及Fragment方法的学习
    Android上下左右滑动,显示底层布局
    android权限大全
    android学习之VelocityTracker
    Android之自定义(上方标题随ViewPager手势慢慢滑动)
    Red Hat Enterprise Linux 7.5安装极点五笔
    Red Hat Enterprise Linux 7.5安装盘内容做本地YUM源
    RHEL7+Oracle11g笔记
    CentOS安装VNC方法
  • 原文地址:https://www.cnblogs.com/houtaoliang/p/4421532.html
Copyright © 2011-2022 走看看