#include<iostream>
using namespace std;
#define Nu 5
int main()
{
int a[Nu]={2,-2,4,-6,1};
cout<<"随機産生數組為:";
for(int i=0;i<Nu;i++)
cout<<a[i]<<" ";
cout<<endl;
int sum=a[0],b=a[0],x=0,y=0;
int j=1;
while((j-x<Nu)&&x<Nu)
{
if(b>0)
{
b=a[j%Nu];
if(j<Nu)
x=j;
else
break;
}
else
b+=a[j%Nu];
if(sum>b)
{ sum=b;y=j;}
j++;
}
cout<<x<<endl<<y<<endl;
sum=0;
for(int i=y+1;i<x+Nu;i++)
sum+=a[i%Nu];
cout<<"相鄰子數組最大和為:"<<sum<<endl;
cout<<"相應子數組為:";
for(int i=y+1;i<x+Nu;i++)
cout<<a[i%Nu]<<" ";
cout<<endl;
return 0;
}

成員:宋雨佳 周雪瑩
設計思路:繼第一次的首尾相連最大子數組和,這是改進版,因為當1 2 3 -1 2時,-1是不能被舍棄的,是以就反其道而行,求最小的子數組和,餘下的便是最大子數組。
後感:還屁颠屁颠的覺得首尾相連簡簡單單就做完了,在幫同學看程式時發現了自己程式的不足,但是這次程式也不是很完善,全負數和全正數沒有考慮,哎呀不想寫了!目前還沒有舉出不符合算法的數組,考慮不完整,以後發現繼續完善