【PAT】1-2 Maximum Subsequence Sum
题目地址:http://www.patest.cn/contests/mooc-ds/01-2
计算最大子列和,并打印出子列的第一个元素和最后一个元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <cstdio> using namespace std; #define MAXN 100000 int main() { int list[MAXN]; int n,i; int ThisSum, MaxSum; int head,tail; scanf ( "%d" ,&n); int start = 0,end = n-1; for ( int i = 0; i < n; ++i) { scanf ( "%d" ,&list[i]); } ThisSum = MaxSum = 0; for ( int i = 0; i < n; ++i) { if (ThisSum >=0) { ThisSum += list[i]; tail = i; } else { ThisSum = list[i]; head = i; tail = i; } if (ThisSum > MaxSum ||(ThisSum == 0 && MaxSum == 0)) { MaxSum = ThisSum; start = head; end = tail; } } printf ( "%d %d %d\n" ,MaxSum, list[start], list[end]); return 0; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步