zoukankan      html  css  js  c++  java
  • 用c++实现环形数组的最大子数组之和(结对)

    结对作业

    1.分解问题,将环形数组,剪开变成一个一维数组。

    2.用一维数组的最大子数组和解决。

    对于一个环形数组,对每一个一维数组的表示共有n-1种

    源代码如下:

     1 #include<iostream>
     2 using namespace std;
     3 int max_sum1(int a[],int n)
     4 {
     5     int max_sum_h=a[0];
     6     int t,k=n-1;
     7     while(k)
     8     {
     9          int sum=a[0];
    10          int max_sum=a[0];
    11          for(int i=1;i<n;i++)
    12          {
    13              if(sum>0)    //从第二个数开始判断是否为正数
    14              {
    15                  sum=sum+a[i];  //是正数,将和值(初始值为p【0】)和第i+1个数做和。
    16                  if(sum>max_sum) // 并判断是否为最大,是让其赋值给max_sum,并将子数组末位置改变。
    17                  {
    18                      max_sum=sum;
    19                  }
    20              }
    21              else 
    22             {
    23                 sum=a[i];  //是负数,将第i+1个数的值赋值给和值sum
    24                 if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum,并将子数组初、末位置改变。
    25                 {
    26                     max_sum=sum;
    27                 }
    28             }
    29          }
    30          //每一种结果比较一次,一共比较n-1次
    31          if(max_sum_h<=max_sum)
    32          {
    33              max_sum_h=max_sum;
    34          }
    35          //实现环形数组的变化成一维数组
    36          t=a[n-1];
    37          for(int i=n-1;i>0;i--)
    38          {
    39              a[i]=a[i-1];
    40          }
    41          a[0]=t;
    42          k--;
    43     }
    44     return max_sum_h;
    45 }
    46 int main()
    47 { 
    48   int n,star=0,end=0;
    49   //实现整型数组的输入
    50   cout<<"输入整型数组的长度"<<endl;
    51   cin>>n;
    52   int *p=new int[n];
    53   cout<<"输入一个整型数组"<<endl;
    54   for(int i=0;i<n;i++)
    55   { 
    56       cin>>p[i];
    57   }
    58   cout<<"最大子数组和为"<<max_sum1(p,n)<<endl;
    59   return 0;
    60 }

     总结

    在一维最大子数组之和的基础上变化成环形数组,需要将一个问题分解成几步,变成我们能处理或掌握的知识解决。

     

  • 相关阅读:
    Linux下文件权限的设置
    JavaEE中一些缩写的含义
    Xcode7.1环境下上架iOS App到AppStore 流程 转
    iOS UILabel UITextView自适应文本,或文本大小自适应
    Xcode常用快捷键总结
    iOS9的新特性以及适配方案-----转载
    Python下读取转换unicode的json格式
    python pip 不能用报错: ImportError: No module named _internal
    Python获取二维数组的行列数
    Python作用域
  • 原文地址:https://www.cnblogs.com/yinianzs/p/9891357.html
Copyright © 2011-2022 走看看