最长递增子序列 - dp
2013-09-16 20:32
190 查看
////53、最长递增子序列 //// ////题目描述:设L=<a1,a2,…,an>是n 个不同的实数的序列,L 的递增子序列是这样一个子序 //// ////列 //// ////Lin=<ak1,ak2,…,akm>,其中k1<k2<…<km 且ak1<ak2<…<akm。 //// ////求最大的km 值。 #include <iostream> using namespace std; //思路:动态规划:dp[i] = max(dp[i], dp[j] + 1); , n > j > i >= 0 #define NSIZ 100 int dp[NSIZ]; void longest_increase_seq(int arr[], int an) { int i = 0, j = 0, cn = 0; int maxlen = 0; for(i = 0;i <= an; ++i) { dp[i] = 1; } for(i = an - 1;i >= 0; --i) { for(j = i + 1;j < an; ++j) { if(arr[i] < arr[j]) { dp[i] = max(dp[i], dp[j] + 1); if(maxlen < dp[i]) { maxlen = dp[i]; } } } } //打印最长递增子序列 printf("最长递增子序列为:\n"); for(j = maxlen, i =0;i < an; ++i) { if(dp[i] == j) { printf("%d ", arr[i]); --j; } } printf("\n"); } int main() { int arr[] = {1, 2, 4, 3, 5}; int an = sizeof(arr)/sizeof(arr[0]); longest_increase_seq(arr, an); return 0; }
相关文章推荐
- 哈理工1116选美大赛(最长递增子序列)(对dp数组内数据的理解)
- 动态规划(DP),最长递增子序列(LIS)
- 浙大pat | 牛客网 1034 Favorite Color Stripe (30) 最长递增子序列 DP
- 序列分割 HYSBZ - 3675 斜率dp
- hdu 4745 Two Rabbits(dp最长回文子序列)
- UVA-11552-Fewest Flops(DP 序列划分)
- 最长递增子序列 lcs
- 第7周作业3——最长递增子序列
- 最长上升子序列 dp
- 最长递增子序列问题
- HDOJ---1257 最少拦截系统[线性DP]+NYOJ---拦截导弹[输出最长单调子序列的长度]
- 最长递增子序列问题
- 51nod 1134 最长递增子序列(dp)
- 【loj】#6005. 「网络流 24 题」最长递增子序列(dp+最大流)
- DP-最大递增子序列与最大递增子数组; 最大公共子序列与最大公共子数组。
- hdu 5087 次长上升自序列的长度dp
- NYOJ 17 单调递增最长子序列(经典dp)
- HDU Problem E [ 最长下降子序列 堆箱子]——基础dp模板题变式
- 最长递增子序列问题—LIS
- hdu 1087 最大上升子序列的和(dp或线段树)