最长递增子序列?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 }