PAT-A 1007. Maximum Subsequence Sum (25)
2017-08-22 15:16
543 查看
注意点:
最大子序列的和,又要选取序号最小的。和为0的与和为负数的要分开来考虑。
题中数据好像没有给出以下情况例子
1 -1 2 2 3 -1
这个结果应该是
(1) 7 1 3
(2) 7 2 3
两种算法都能通过。按照题意应该是(1)
代码:
最大子序列的和,又要选取序号最小的。和为0的与和为负数的要分开来考虑。
题中数据好像没有给出以下情况例子
1 -1 2 2 3 -1
这个结果应该是
(1) 7 1 3
(2) 7 2 3
两种算法都能通过。按照题意应该是(1)
代码:
#include<iostream> using namespace std; int main() { int a[10005], s[10005]; int n, i, j, max, sum; int left, right; cin >> n; for (i = 0; i < n; i++) cin >> a[i]; max = 0; s = 0; for (i = n - 1; i >= 0; i--) { s[i] = a[i] + s[i + 1]; if (s[i] < 0) s[i] = 0; } for (i = 0; i < n; i++) if (max < s[i]) { max = s[i]; left = i; } if (max == 0) { for (i = 0; i < n;i++) if (a[i] == 0) { cout << "0 0 0" << endl; return 0; } cout << "0 " << a[0] << " " << a[n - 1] << endl; return 0; } sum = a[left]; right = left; while (sum < max) { right++; sum += a[right]; } cout << max << " " << a[left] << " " << a[right] << endl; return 0; }
相关文章推荐
- PAT(甲级)1007. Maximum Subsequence Sum (25)
- PAT Advanced 1007. Maximum Subsequence Sum (25) (C语言实现)
- PAT甲 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT甲级 1007. Maximum Subsequence Sum (25)
- 【PAT甲级】1007. Maximum Subsequence Sum (25)
- 【PAT】1007. Maximum Subsequence Sum (25)
- pat 1007. Maximum Subsequence Sum (25)
- PAT-Java-1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- PAT (Advanced Level) Practise 1007. Maximum Subsequence Sum (25)
- PAT甲级-1007. Maximum Subsequence Sum (25)最大子序列和
- 【PAT】1007. Maximum Subsequence Sum (25)
- PAT-1007. Maximum Subsequence Sum (25)
- pat 1007. Maximum Subsequence Sum (25)
- 【PAT Advanced Level】1007. Maximum Subsequence Sum (25)
- PAT-A-1007. Maximum Subsequence Sum (25)
- PAT (Advanced Level) Practise 1007. Maximum Subsequence Sum (25)
- PAT (Advanced Level) Practise - 1007. Maximum Subsequence Sum (25)