最长不下降子序列的O(N^2)实现。
代码
#include <iostream>
using namespace std;
int main() {
int n;
int i, j;
cin >> n;
int *a = new int[n + 1];
int *ans = new int[n + 1];
//memset(ans,0,sizeof(int)*(n+1));
for (i = 1; i <= n; i++) {
cin >> a[i];
ans[i] = 1;
}
for (i = 2; i <= n; i++) {
for (j = 1; j < i; j++) {
if (a[j] <= a[i]) {
ans[i] = max(ans[j] + 1, ans[i]);
}
}
}
int max1 = 1;
for (i = 1; i <= n; i++) {
if (ans[i] > max1) max1 = ans[i];
}
cout << max1;
system("pause");
return 0;
}