HDU 1003 Max sum

这是一道典型 的动态规划的题目,意思是让求一段序列中连续子序列的最大和,并输出起始位置和终止位置

//============================================================================ // Name : HDU.cpp // Author : sunyanfei // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================  #include <iostream> #include <cstdio> using namespace std; int sequence[100010]; int N; int main() { int T,i,j;

    scanf("%d",&T); int cases=0; while(T--) {

        cases++;

        scanf("%d",&N); for(i=1;i<=N;i++) {

            scanf("%d",&sequence[i]); } int start; int end; long long maxsum=-9999999; for(j=1;j<=N;j++) { long long sum=0; int st=j; int endll; while(sum>=0) {

                sum+=sequence[j];

                endll=j; if(sum>maxsum) {

                    maxsum=sum;

                    start=st;

                    end=endll; }

                j++; if(j>N)break; }

            j--; }

        printf("Case %d:\n",cases);

        cout<<maxsum<<" "<<start<<" "<<end<<endl; if(T!=0){printf("\n");} } return 0; }

你可能感兴趣的:(HDU)