思路
不得不说浙大这个数据结构里面的题目都是经典题目,不管是保研还是工作面试都出现过类似的题目,不过这个题目我觉得陈姥姥没有y总讲得好,陈佬佬说得就是O(n)的做法名字叫做“在线更新”,没有给出一套方法论,而y总就说得很清楚了,这就是一个动态规划,用一个变量s来代表以当前下标结尾的数组的最大子数组和。
AC代码
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int K;
cin>>K;
int *array=new int[K];
for(int i=0;i<K;i++){
cin>>array[i];
}
int res=0,s=0;
for(int i=0;i<K;i++){
if(s<=0){
s=0;
}
s+=array[i];
res=max(s,res);
}
cout<<res;
return 0;
}
注意事项
注意这里输入输出的时候会直接忽略掉空格,所以直接cin即可