hdu1087最长(最大)上升子序列
2017-01-20 03:05
225 查看
/*这个题的一个重要条件是下面的两个for循环,i<j && num[i] < num [j]时,有个相加关系*/ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define INF 0x3f3f3f3f using namespace std; int n; int num[1010];//原始数组 int dp[1010];//记忆数组dp int main() { while(scanf("%d", &n) != EOF && n){ memset(num, 0, sizeof(num)); memset(dp, 0, sizeof(dp)); int sum ; for(int i = 0; i < n; i++) scanf("%d", &num[i]); dp[0] = num[0]; int maxx = dp[0];//先默认第一个数为最大 for(int i = 1; i < n; i++){ sum = num[i];//这里是因为上一个点不一定符合j<i && num[i] > num[j]则没有sum 所以sum最小为当前num[i] for(int j = 0; j < n; j++){ if(num[i] > num[j]) sum = max(sum, num[i]+dp[j]); } dp[i] = sum;//这里更新每次每个符合条件的当前点的最大值并记忆化避免多次运算 maxx = max(maxx, dp[i]);//这里是找出最大的dp } cout << maxx << endl; } return 0; }
相关文章推荐
- 全部最大上升子序列
- HDOJ 5532 Almost Sorted Array(qwb铜牌水题 最大上升子序列)
- 最大上升子序列算法及其改进
- 【LIS】NOI 3532:最大上升子序列和
- jobdu 1480 最大上升子序列和结题报告 动态规划问题
- “最长上升子序列,最大连续子序列和,最长公共子串”的Java实现
- 13:最大上升子序列和
- 洛谷 p1567 统计天数(求最大上升子序列)
- 暑期dp46道(31)--HDOJ 1087 最大上升子序列和 dp(水)
- hdu3998 最长上升子序列及其个数 dp或dp+最大流
- bjfu1253 最大上升子序列和
- 动态规划-3003-序列的最大上升子序列
- 【最大上升子序列+经典题】北大 poj 2533 Longest Ordered Subsequence
- hdu1160_FatMouse's Speed 最大上升子序列
- 1087 最大上升子序列
- 动态规划练习题-13(最大上升子序列和)
- 最大上升子序列和
- hdu 1024 最大上升子序列
- cugb 1009 合唱队形 (最大上升子序列)
- 题目1480:最大上升子序列和