Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
441980 王程之 序列(lis) C++ 通过 100 4 MS 248 KB 871 2026-05-26 16:44:59

Tests(10/10):


#include <iostream> #include <algorithm> using namespace std; const int MAXN = 1005; int a[MAXN]; // 存储数列 int dp[MAXN]; // dp[i] 表示以第i个数结尾的最长上升子序列长度 int main() { int n; cin >> n; // 1. 输入数列 for (int i = 0; i < n; i++) { cin >> a[i]; dp[i] = 1; // 每个数自己就是长度为1的序列 } // 2. 核心:动态规划求 LIS int ans = 1; // 答案至少是1 for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { // 如果前面的数 < 当前数,可以接在后面 if (a[j] < a[i]) { dp[i] = max(dp[i], dp[j] + 1); } } ans = max(ans, dp[i]); // 更新最大值 } // 3. 输出答案 cout << ans << endl; return 0; }


测评信息: