HDU 1231 最大连续子序列 --- 入门DP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1231 最大连续子序列 --- 入门DP相关的知识,希望对你有一定的参考价值。
题目大意以及解题思路见: HDU 1003题解,此题和HDU 1003只是记录的信息不同,处理完全相同。
/* HDU 1231 最大连续子序列 --- 入门DP */ #include <cstdio> #include <cstring> int dp[10005]; int main() { #ifdef _LOCAL freopen("D:\\\\input.txt", "r", stdin); #endif int n; int maxSum, fst, lst; int start, ai; //start用于记录起始位置,ai表示a[i],这样可以省去一个数组 while (scanf("%d", &n) == 1 && n){ for (int i = 0; i < n; ++i){ scanf("%d", dp + i); }//for(i) start = lst = fst = maxSum = dp[0]; for (int i = 1; i < n; ++i){ ai = dp[i]; if (dp[i - 1] >= 0){ dp[i] = dp[i - 1] + dp[i]; } else{ start = dp[i]; } if (dp[i] > maxSum){ maxSum = dp[i]; fst = start; lst = ai;//这是dp[i]已经更新了,不再是原来的a[i],因此需要提前记录下来 } }//for(i) if (maxSum < 0){ printf("0 %d %d\\n", dp[0], dp[n - 1]); } else{ printf("%d %d %d\\n", maxSum, fst, lst); } } return 0; }
以上是关于HDU 1231 最大连续子序列 --- 入门DP的主要内容,如果未能解决你的问题,请参考以下文章