HDU 1003 最长字段和(经典动态规划)

来源:互联网 发布:免费网络教学平台 编辑:程序博客网 时间:2024/06/14 17:39
//原来做这道题,使用刘汝佳书上的方法实现,动态规划来做,很经典的一道题#include <cstdio>const int nMax = 100007;struct Node{int l, r;int sum;Node(){}Node(int l, int r, int sum):l(l), r(r), sum(sum){}}node[nMax];int main(){int T;scanf("%d", &T);int cas;for(cas = 1; cas <= T; cas ++){int N;scanf("%d", &N);int i;node[0].sum = -0x3fffffff;for(i = 1; i <= N; ++ i){int x;scanf("%d", &x);node[i] = Node(i, i, x);if(node[i - 1].sum + x >= node[i].sum){node[i] = Node(node[i - 1].l, i, node[i - 1].sum + x);}}int _max = 0;for(i = 1; i <= N; ++ i)if(node[i].sum > node[_max].sum)_max = i;printf("Case %d:\n", cas);printf("%d %d %d\n", node[_max].sum, node[_max].l, node[_max].r);if(cas != T) printf("\n");}return 0;}

原创粉丝点击