pat甲级1007 Maximum Subsequence Sum
就喜欢把自己一两个case过不了的程序放上来(当然现在的代码在pat上已经通过)
主要注意不道德问题是当数列中全为负数时,输出0原数列的第一个元素和最后一个元素!输出0原数列的第一个元素和最后一个元素!输出0原数列的第一个元素和最后一个元素!(重要的是说三遍)
在测试数据应当是 4,5
#include<iostream>
using namespace std;
int main()
{
int n,i;
int a[10005];
int sum[10005];
int pos[10005];
cin >> n;
int f = 0;
for (i = 0; i < n; i++)
{
cin >> a[i];
//if (a[i] > 0) f = 1;
sum[i] = a[i];
pos[i] = i;
}
for (i = 1; i < n; i++)
{
if (sum[i] <= a[i] + sum[i - 1])
{
sum[i] = a[i] + sum[i - 1];
pos[i] = pos[i - 1];
}
}
int max = 0;
int p1, p2;
for (i = 0; i < n; i++)
{
if (sum[i] > sum[max])
{
max = i;
}
}
if (sum[max]>=0)
cout << sum[max] << " " << a[pos[max]] << " " << a[max] << endl;
else cout << 0<<" " << a[0] << " " << a[n-1] << endl;
return 0;
}