• 软件工程概论-合作作业01


    一、要求

      求一整数数组(有负数)循环子数组之和的最大值。

    二、思路

      1.从数组的后面排除小于0或者累加小于0的,用max记录被排除的子数组的和的最大值;

      2.循环则变化原数组,如{a0,a1,...an}则可以变化为{a0,a1,...an,a0,a1..an-1};

    三、源代码

     1 #include <iostream>
     2 #include <iomanip>
     3 #include <vector>
     4 using namespace std;
     5 void showArray(vector<int> x)
     6 {
     7     if(x.size()==0)
     8         cout<<"NULL"<<endl;
     9     int len=x.size();
    10     for(int i=0;i<len;i++)
    11     {
    12         cout<<setw(5)<<x[i];
    13     }
    14     cout<<endl;
    15 }
    16 int sonArrMax(vector<int> array)
    17 {
    18     if(array.size()==0) return -59659;
    19     int len=array.size();
    20     int maxNum=0;
    21     int sum=0;
    22     for(int i=0;i<len-1;i++)
    23     {
    24         array.push_back(array[i]);
    25     }
    26     len=array.size();
    27     for(int i=0;i<len;i++)
    28     {
    29         sum+=array[i];
    30         if(sum>maxNum)
    31         {
    32             maxNum=sum;
    33         }
    34         if(sum<0)
    35         {
    36             sum=0;
    37         }
    38     }
    39     return maxNum;
    40 }
    41 
    42 void main()
    43 {
    44     vector<int> array;
    45     int arr[]={1,2,-3,0,7,-8,5};//测试数组
    46     for(int i=0;i<7;i++)
    47         array.push_back(arr[i]);
    48     /*int x,number;
    49     cout<<"数组长度:"<<endl;
    50     cin>>number;
    51     cout<<"输入"<<number<<"个整数:"<<endl;
    52     for(int i=0;i<number;i++)
    53     {
    54         cin>>x;
    55         array.push_back(x);
    56     }*/
    57     cout<<"该数组为:"<<endl;
    58     showArray(array);
    59     cout<<"最大环子数组和为:"<<sonArrMax(array)<<endl;
    60 }
    View Code

    四、实验结果

      

  • 相关阅读:
    linux [Fedora] 下的 "飞秋/飞鸽传书"
    弹跳是不是自由落体?
    插件的简单原理
    WebService的简单应用
    普通按钮的另一种提交方式(调用后台事件)
    ASPNET服务端控件练习(一个机试题)
    AJAX简单的数据增删改与分页应用
    new XMLHttpRequest()和页面关系
    c++中placement new
    netty的引用计数
  • 原文地址:https://www.cnblogs.com/yifengyifeng/p/6652998.html
Copyright © 2020-2023  润新知