全部评论 1

  • 解释2

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1010;
    int a[N], dp[N]; // 定义数组a和dp,用于存储输入的数列和最长上升子序列长度
    //dp[i] = j; 当遍历到下标 i 时,获取到的最长上升子序列的长度为 j;
    int n,ans; // 存储最终的最长上升子序列长度
    
    int main() {
    	cin >> n;
    	for (int i = 1; i <= n; i++) {
    		cin >> a[i]; 
    		dp[i] = 1; // 初始时,最长上升子序列长度至少为1(自己本身)
    		for (int j = 1; j < i; j++) {
    			if (a[j] < a[i]) {
    				dp[i] = max(dp[i], dp[j] + 1); // 更新dp[i],如果可以接在dp[j]后面
    			}
    			ans = max(ans, dp[i]); // 更新全局最长上升子序列长度
    		}
    	}
    	cout << ans << endl;
    	return 0;
    }
    

    2025-10-08 来自 广东

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页