POJ 1887

来源:互联网 发布:西部数码域名管理平台 编辑:程序博客网 时间:2024/05/18 01:17

求最长上升子序列。

g[i]表示到达第i个数时能达到的最长的长度。

代码写的不怎么样,貌似有更好的算法。有时间再去学习一下。

#include<iostream>using namespace std;int f[40000], g[40000];int a = 0;int main(){cin >> f[0];while(f[0] != -1){int i = 1;for(i = 1; f[i - 1] != -1; ++i)cin >> f[i];--i;int max = -5;memset(g, 0, sizeof(g));for(int j = 0; j < i; ++j){for(int k = 0; k < j; ++k){if(f[k] > f[j] && g[k] >= g[j])g[j] = g[k] + 1;}max = max > g[j]? max : g[j];}cout << "Test #" << ++a << ':' << endl;cout << "  maximum possible interceptions: " << max + 1 << endl << endl;cin >> f[0];}return 0;}