1. 求解思路
#include <bits/stdc++.h>
using namespace std;
#define MAXN 20
// 问题表示
int a[] = {2, 1, 5, 3, 6, 4, 8, 9, 7};
int n = sizeof(a) / sizeof(a[0]);
int dp[MAXN];
int ans = 0;
void solve(int a[], int n)
{
for (int i = 0; i < n; i++)
{
dp[i] = 1;
for (int j = 0; j < i; j++)
{
if (a[i] > a[j])
dp[i] = max(dp[i], dp[j] + 1);
}
}
ans = dp[0];
for (int k = 1; k < n; k++)
if (ans < dp[k])
ans = dp[k];
}
int main()
{
solve(a, n);
cout << "求解结果" << endl;
cout << "最长递增子序列的长度为:" << ans;
return 0;
}