首页 > 代码库 > 软件工程概论-合作作业01
软件工程概论-合作作业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 }
四、实验结果
软件工程概论-合作作业01
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。