题解 | #Redraiment的走法#
Redraiment的走法
https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa
#include <bits/stdc++.h>
using namespace std;
int main(){
int n = 0;
while(cin >> n){
vector<int> nums(n, 0);
for(int i = 0; i < n; i++){
int num = 0;
cin >> num;
nums[i] = num;
}
vector<int> dp(n, 1); //dp[i]表示以nums[i]为结尾的严格上升子序列的长度(初始化为1)
int res = 1;
for(int i = 0; i < nums.size(); i++){
for(int j = 0; j < i; j++){ //遍历前面的
if(nums[j] < nums[i]){ //确保严格上升
dp[i] = max(dp[i], dp[j] + 1); //
}
}
res = max(res, dp[i]); //维护最大值
}
cout << res << endl;
}
return 0;
}
华为题库题解 文章被收录于专栏
牛客华为题库的题解
