//转移方程:ans[i] = max(a[i], ans[j] + a[i]) j < i && a[j] < a[i] #include <iostream> #include <cstring> #include <algorithm> #include <string> using namespace std; int ans[1010]; int a[1010]; int n; int main() { //freopen("1.txt", "r", stdin); while(cin >> n && n != 0) { for(int i = 1; i <= n; i++) { cin >> a[i]; ans[i] = a[i]; for(int j = 1; j < i; j++) { if(a[j] < a[i]) ans[i] = max(ans[i], ans[j] + a[i]); } } int _max = ans[1]; for(int i = 2; i <= n; i++) if(ans[i] > _max) _max = ans[i]; cout << _max << endl; } return 0; }
hdoj 1087 Super Jumping! Jumping! Jumping!
最新推荐文章于 2020-03-11 21:28:05 发布
本文介绍了一种求解最长递增子序列问题的动态规划算法。通过输入一系列整数,该算法能找出序列中最长的递增子序列的长度。实现过程中运用了两层循环进行状态转移,确保了每个子问题被正确地解决。

418

被折叠的 条评论
为什么被折叠?



