POJ 2533 LIS
2014-12-01 16:26
155 查看
题目大意:找出所给序列的最长上升子序列。
算法思想:
采用动态规划的思想,用dp[i]记录到第i个元素的最长上升子序列的长度,状态转移方程为 dp[i]=max(dp[j](1<=j<i))+1。
代码如下:
算法思想:
采用动态规划的思想,用dp[i]记录到第i个元素的最长上升子序列的长度,状态转移方程为 dp[i]=max(dp[j](1<=j<i))+1。
代码如下:
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int MAXN=10000; int a[MAXN]; int dp[MAXN]; int LIS(int a[],int N){ int m; int ans=1; dp[1]=1; for(int i=2;i<=N;i++){ m=0; for(int j=1;j<i;j++){ if(a[i]>a[j]&&dp[j]>m)//找出小于a[i]的最大的dp[j]; { m=dp[j]; } } dp[i]=m+1; ans=max(ans,dp[i]); } return ans; } int main(){ int N; while(cin>>N){ for(int i=1;i<=N;i++){ cin>>a[i]; } cout<<LIS(a,N)<<endl; } return 0; }
相关文章推荐
- DP LIS(最长上升子序列) POJ 2533 POJ 1836 POJ 2138 HDU 1069
- POJ 2533 Longest Ordered Subsequence DP(LIS)
- poj 2533 DP(LIS)
- POJ-2533(LIS) Longest Ordered Subsequence
- POJ 2533 LIS模板
- POJ 3903-Stock Exchange/POJ 2533-Longest Ordered Subsequence(LIS-最长递增子序列长度)
- POJ 2533 : Longest Ordered Subsequence - LIS问题
- Longest Increasing Subsequence[LIS 最长上升子序列问题] (Longest Ordered Subsequence) POJ - 2533 队列优化
- 【DP|LIS】POJ-2533 Longest Ordered Subsequence(O(n^2)、O(nlogn))
- poj 2533 Longest Ordered Subsequence(LIS(最长上升子序列))
- POJ-2533-Longest Ordered Subsequence(LIS模板)
- [POJ 2533]Longest Ordered Subsequence[LIS]
- 最长上升子列 LIS 学习小记 Poj 2533 +CF 261D
- POJ 2533 Longest Ordered Subsequence(最长非递减子序列,LIS)
- POJ 2533 Longest Ordered Subsequence(dp LIS)
- poj 2533 Longest Ordered Subsequence (LIS)
- poj 2533 && zoj 2136 Longest Ordered Subsequence --- LIS模板
- POJ2533:Longest Ordered Subsequence(LIS)
- POJ 2533 Longest Ordered Subsequence(dp LIS)
- poj - 2533 - Longest Ordered Subsequence(LIS)