动态规划之一最长上升子序列LIS
生活随笔
收集整理的這篇文章主要介紹了
动态规划之一最长上升子序列LIS
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//最長上升子序列
#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結尾的上升子序列的長度
?
轉載于:https://www.cnblogs.com/plxx/p/3232731.html
總結
以上是生活随笔為你收集整理的动态规划之一最长上升子序列LIS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享codeigniter框架,在zen
- 下一篇: JS中的HTML片段