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 }

    运行结果截图:

    合作图:

  • 相关阅读:
    POJ 1251 Jungle Roads
    1111 Online Map (30 分)
    1122 Hamiltonian Cycle (25 分)
    POJ 2560 Freckles
    1087 All Roads Lead to Rome (30 分)
    1072 Gas Station (30 分)
    1018 Public Bike Management (30 分)
    1030 Travel Plan (30 分)
    22. bootstrap组件#巨幕和旋转图标
    3. Spring配置文件
  • 原文地址:https://www.cnblogs.com/stdu-412/p/9901537.html
Copyright © 2011-2022 走看看