NYOJ 子串和

来源:互联网 发布:autodesk revit 知乎 编辑:程序博客网 时间:2024/05/22 08:10

点击打开链接

很多人说是动态规划,我又不知道我用的是什么算法,只是数据结构课本上有这个算法,就记了下来,算法挺经典的

代码如下:

//要注意本题可能全为负数,所以要将MaxSum初始为一个很小的负数,这一点让我wa了好几遍,注意#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#define Max 1000005using namespace std;int main(){    int N;    int n,temp;    int ThisSum,MaxSum;    scanf("%d",&N);    while(N--){        scanf("%d",&n);        ThisSum=0;        MaxSum=-65535;        for(int i=0;i<n;i++){            scanf("%d",&temp);            ThisSum+=temp;//向右累加            if(ThisSum>MaxSum)                MaxSum=ThisSum;//如果有更大的和则更新最大和            else if(ThisSum<0)                ThisSum=0;//若当前的和为负数则不可能使后面的和增大,所以重置为0        }        printf("%d\n",MaxSum);    }    return 0;}

原创粉丝点击