hdu 1003

来源:互联网 发布:java 调用指定浏览器 编辑:程序博客网 时间:2024/06/11 10:04

 做了一道hdu的水题,还是有点收获的,题目要求求出最大连续序列和。首先想到动态规划,可以这样来想,如果a[i]之前的sum大于零,就加上a[i],数据递增,更新暂时的终点为i;否则的话,sum=a[i],更新起点和终点为i。每计算一次sum就和ans比较,更新最终结果和最终起点终点。

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#define maxn 100005using namespace std;int main(){//freopen("input.txt","r",stdin);int a[maxn],sum,f,e,t,n,w,i,j,ans,p,q;scanf("%d",&t);for(w=1;w<=t;w++){sum=-maxn;ans=-maxn;p=q=1;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&a[i]);if(sum<0){sum=a[i];p=q=i;}//更新起点 else{sum+=a[i];q++;}//更新终点 if(sum>ans){ans=sum;f=p;e=q;}//更新结果 }printf("Case %d:\n%d %d %d\n",w,ans,f,e);if(w!=t) printf("\n");}return 0;}


0 0
原创粉丝点击