zoukankan      html  css  js  c++  java
  • 环形数组的最大子数组求解

    然后再用一维数组求解最大子数组的方法即可。值得注意的是,子数组的长度不可超过n,在我程序中有所体现。最终,因为没有要求时间复杂度的问题,我选择

    了遍历的方法求解了此问题。

    程序代码:

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int n;
     6     cout<<"输入环形数组的长度:";
     7     cin>>n;
     8     int *p;
     9     p=new int[n];
    10     for(int i=0;i<n;i++)
    11     {
    12         cin>>p[i];
    13     }
    14     int *q;
    15     q=new int[2*n-1];
    16     for(int i=0;i<2*n-1;i++)
    17     {
    18         if(i<n)
    19         {
    20             q[i]=p[i];
    21         }
    22         if(i>=n)
    23         {
    24             q[i]=p[i-n];
    25         }
    26             //cout<<q[i];
    27     }
    28     int *a=new int[n*n];
    29     //对数组a[]进行初始化;
    30     for(int i=0;i<n*n;i++)
    31     {
    32         a[i]=0;
    33     }
    34     int t=0;
    35     //利用枚举法,将子数组列举出;
    36     for(int i=0;i<n;i++)
    37     {
    38         for(int j=i;j<n+i;j++)//因为环形子数组最大长度最多为n;而n+i-i即为n;
    39         {
    40             for(int z=i;z<=j;z++)
    41             {
    42                 a[t]=a[t]+q[z];
    43             }
    44             t++;
    45         }
    46     }
    47     //求出最大子数组;
    48     for (int i = 0; i <n*n; i++)
    49     {
    50         if (a[0] < a[i])
    51         {
    52             a[0] = a[i];
    53         }
    54     }
    55     cout<< "最大子数组的和为:"<<a[0] << endl;
    56 
    57     system("pause");
    58     return 0;
    59 }

    运行结果截图:

    合作图:

  • 相关阅读:
    div 背景透明,字体不透明
    弹性盒子(1)
    小练习(4)
    小练习(3)
    图标文字上拉效果
    小练习(2)
    小练习
    css的使用(1)
    复合的使用
    表单元素的使用 form input
  • 原文地址:https://www.cnblogs.com/stdu-412/p/9901537.html
Copyright © 2011-2022 走看看