动态规划之一最长上升子序列LIS
2013-08-02 15:38
309 查看
//最长上升子序列 #include<iostream> #include<cstring> using namespace std; const int maxn = 10100; int a[maxn],dp[maxn]; int n,k; //a[] 保存原始数据 //dp[i] 表示原始数中以i结尾的上升子序列的长度 int res() { dp[0] = 1; int max = 0; for(int i = 1;i<n;i++) for(int j = 0;j<i;j++){ if(a[i]>a[j] && dp[i] < (dp[j]+1)) { dp[i] = dp[j]+1; } if(max < dp[i]) max = dp[i]; } return max; } int main() { cin>>n; for(int i = 0;i<n;i++) cin>>a[i]; cout<<res()<<endl; return 0; }
此算法为O(n^2)
for(int i = 1;i<n;i++)
for(int j = 0;j<i;j++)//从头开始查找
{
if(a[i]>a[j] && dp[i] < (dp[j]+1))
{
dp[i] = dp[j]+1;
}
if(max < dp[i])
max = dp[i];
}
//a[] 保存原始数据
//dp[i] 表示原始数中以i结尾的上升子序列的长度
相关文章推荐
- 动态规划-最长上升子序列(LIS)
- 动态规划7:最长上升子序列LIS
- 动态规划-最长上升子序列(LIS)
- 动态规划-最长上升子序列(LIS)
- 动态规划-最长上升子序列(LIS)
- 动态规划-最长上升子序列(LIS)
- 动态规划 最长上升子序列(LIS)
- 动态规划-最长上升子序列(LIS)
- 动态规划-最长上升子序列(LIS)
- 动态规划_最长上升子序列LIS
- 动态规划--最长上升子序列LIS
- Leetcod-300_最长上升子序列LIS-基础动态规划问题-【C++】
- 动态规划——E (LIS())最长上升子序列
- 动态规划-最长上升子序列(LIS)
- YTU OJ 3135: 动态规划基础题目之最长上升子序列(Java解题)
- 动态规划——最长公共上升子序列LCIS
- 动态规划专练4 最长上升子序列
- 动态规划----最长上升子序列问题
- 动态规划:最长上升子序列
- 动态规划 最长公共子序列 最长上升子序列 最长上升公共子序列