题解 | #Redraiment的走法#
Redraiment的走法
https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa
//Redraiment是走梅花桩的高手。Redraiment可以选择任意一个起点,从前到后,
//但只能从低处往高处的桩子走。他希望走的步数最多,你能替Redraiment研究他最多走的步数吗?
//本题是最长不下降子序列
//测试用例 1 2 3 -9 3 9 0 11 输出6
#include <iostream>
#include <algorithm>
#define MAX 201
using namespace std;
//int num[MAX];
int A[MAX],dp[MAX];
int main(int argc, char const *argv[])
{
int n;
cin>>n;
for (int i = 1; i <=n; ++i)
{
cin>>A[i];
}
int ans=-1;//记录最大的dp[i]
for (int i =1; i <=n; ++i)
{
dp[i]=1;//初始边界条件
for (int j = 1; j< i; ++j)
{
if(A[i]>A[j]&&(dp[j]+1>dp[i]))
{
dp[i]=dp[j]+1;
}
}
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
system("pause");
return 0;
}
