bc+变化后与变化前相减成一个数组,然后就是求最大子串和的问题了

来源:互联网 发布:苹果mac怎么用 编辑:程序博客网 时间:2024/04/28 03:02
点击打开链接
#include<stdio.h>#include<stdlib.h>#include<iostream>#include<cstring>#include<string>#include<string.h>#include<algorithm>#include<math.h>using namespace std;int Sum1[100005],dp[100005];int main(){    long long result=0;    int n=0,i=0,num=0,temp=0,max1=0;    while(cin>>n){       i=0,num=0,temp=0,max1=0;      memset(Sum1,0,sizeof(Sum1));      for(i=1;i<=n;i++){            scanf("%d",&num);            Sum1[i]=Sum1[i-1]+num;            dp[i]=(1890*num+143)%10007-num;      }      temp+=dp[1];      max1=0;      for(i=2;i<=n;i++){        if(temp<0) temp=dp[i];        else temp+=dp[i];        if(temp>max1) max1=temp;      }       if(max1<0)        printf("%d\n",Sum1[n]);        else            printf("%d\n",Sum1[n]+max1);    }    return 0;}

0 0
原创粉丝点击