题解 | #Redraiment的走法#
Redraiment的走法
https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa
#include <algorithm> #include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> v(n, 0); for(int i = 0; i < n; ++i){ cin >> v[i]; } // 对于一个数组,从前往后,每次只能从小到大,问最多经过多少数字 // 即寻找最长递增子序列的长度 vector<int> dp(v.size(), 1); //设置数组长度大小的动态规划辅助数组 int maxStep = 1; for(int i = 1; i < v.size(); i++){ for(int j = 0; j < i; j++){ if(v[j] < v[i]){ dp[i] = max(dp[i], dp[j]+1); } if(dp[i] > maxStep){ maxStep = dp[i]; } } } cout << maxStep << endl; } // 64 位输出请用 printf("%lld")