实践周2
#include<iostream> using namespace std; int a[100001]; int maxsum(int n) { int sum = 0, b = 0; for(int i = 1; i<=n; i++) { if(b > 0) b += a[i]; else b = a[i]; if(b > sum) sum = b; } return sum; } int main() { int n; cin >> n; for(int i = 1; i<=n; i++) { cin >> a[i]; } cout << maxsum(n); }
第二个想讲讲的题目是最大子列和问题,这题算是算法的经典题了,记得当时第一次做是没做出来的。
这次做的过程意外的顺利,虽然代码很短,但是之前自己试着第二次写出来都没写出来,当时是肯定没理解到做法,第一个for循环是比较绕的一种写法,但是这也体现了算法的优越性。
浙公网安备 33010602011771号