HDU 1231 最大连续子序列

HDU 1231 最大连续子序列 

动态规划

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cctype>

#include <cmath>

#include <algorithm>

#include <vector>

#include <queue>

#include <stack>

#include <map>



using namespace std;



const int inf = 0x3f;

const int INF = 0x3f3f3f3f;

const int maxn = 105;

int n, a[10005], b[10005];  

int main()

{

    

    

    while(scanf("%d", &n) && n)

    {

        for(int i = 0; i < n; i++)

        {

            scanf("%d", &a[i]);

        }



        b[0] = a[0];

        int ans = a[0], s = 0, t = 0, e = 0;

        for(int i = 1; i < n; i++)

        {

            b[i] = max(a[i], a[i]+b[i-1]);



            if(b[i] == a[i])

            {

                t = i;

            }

            //printf("i = %d, %d\n", i, b[i]);

            if(b[i] > ans)

            {

                s = t; e = i; ans = b[i];

            }

        }

        if(ans >= 0)

            printf("%d %d %d\n", ans, a[s], a[e]);

        else 

            printf("%d %d %d\n", 0, a[0], a[n-1]);

    }

    return 0;

}

  

 

 

动态规划 挺好的 教程

动态规划:从新手到专家

 

你可能感兴趣的:(HDU)