最长递增子序列?Why?

朦朦胧胧的感觉也许是这样的。。

大神说要用Dilworth定理来证明

无爱了,这个定理先放一放吧

 1 //#define LOCAL
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 const int maxn = 1010;
 9 int dp[maxn];
10 int a[maxn];
11 
12 int main(void)
13 {
14     #ifdef LOCAL
15         freopen("1257in.txt", "r", stdin);
16     #endif
17 
18     int i, n, j;
19     memset(dp, 0, sizeof(dp));
20     dp[1] = 1;
21     while(scanf("%d", &n) == 1)
22     {
23         for(i = 1; i <= n; ++i)
24         {
25             scanf("%d", &a[i]);
26             dp[i] = 1;    
27         }
28 
29         for(i = 2; i <= n; ++i)
30             for(j = 1; j < i; ++j)
31             {
32                 if(a[j] < a[i])
33                 {
34                     dp[i] = max(dp[i], dp[j]+1);
35                 }
36             }
37 
38         int ans = 0;
39         for(i = 1; i <= n; ++i)
40             ans = max(ans, dp[i]);
41         printf("%d\n", ans);
42     }
43     return 0;
44 }
代码君

相关文章:

  • 2022-12-23
  • 2021-09-20
  • 2022-02-06
  • 2021-09-28
  • 2022-12-23
  • 2022-02-04
  • 2021-05-27
猜你喜欢
  • 2018-07-29
  • 2019-06-18
  • 2022-01-13
  • 2022-12-23
相关资源
相似解决方案