问题
思路分析:
就是课堂上所讲过的最大子列和问题,不过需要输出子列头和尾的项
根据网上的资料,摹写代码为
具体实现:
#include<iostream>
using namespace std;
int main (){
int N ;
cin >> N;
int *p = new int[N];
for (int i = 0;i < N;i++)
cin >> p[i];
int Maxsum = 0;
int Thissum = 0;
int start = 0, end = N - 1;
int temp_start = 0;
int temp_end = 0;
for (int j = 0; j < N; j++) {
if (Thissum >= 0) {
Thissum += p[j];
temp_end = j;
}
else
{
Thissum = p[j];
temp_start = j;
temp_end = j;
}
if ( Thissum > Maxsum || (Thissum ==0 )&&( end = N - 1))
{
Maxsum = Thissum;
start = temp_start;
end = temp_end;
}
}
cout << Maxsum<<' '<<p[start]<<' '<<p[end] << endl;
system("PAUSE");
delete[] p;
return 0;
}