求最长递减子序列

来源:互联网 发布:阿里云邮箱下载 编辑:程序博客网 时间:2024/05/20 21:42
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
int main()
{
ifstream cin("input.txt");
int n;
int a[100],dp[100],max=0,index;
cin>>n;
for (int i = 0 ; i < n ; i++)
{
cin>>a[i];
}
for (int i = 0 ; i < n ; i++)
{
cout<<a[i]<<" ";
}

cout<<endl;
for (int i = n-1 ; i >=0 ; i--)
{
dp[i] = 1;
for (int j = i + 1 ; j < n ;j++)
{
if (a[j] < a[i])
{
if(dp[i] < dp[j] + 1)
dp[i] = dp[j] + 1;
}
}
if (max < dp[i])
{
max = dp[i];
index = i;
}
}
cout<<max<<endl;
cout<<index<<endl;

}