最长合法序列
2006-11-05 17:59 老博客哈 阅读(606) 评论(2) 收藏 举报 /*
/* http://acm.hnu.cn:8080/online/?action=problem&type=show&id=10179
http://acm.hnu.cn:8080/online/?action=problem&type=show&id=10179 */
*/ #include <iostream>
#include <iostream>
 using namespace std;
using namespace std;
 int GetMax(int B[], int len)
int GetMax(int B[], int len) {
{ int max = B[0];
    int max = B[0]; for(int i = 1; i < len; i++)
    for(int i = 1; i < len; i++) {
    { if(B[i] > max)
        if(B[i] > max) max = B[i];
            max = B[i]; }
    } return max;
    return max; }
}
 int main()
int main() {
{ int n;
    int n; long long A[1001];
    long long A[1001]; int len;
    int len; int i, j;
    int i, j; cin >> n;
    cin >> n; while(n--)
    while(n--) {
    { cin >> len;
        cin >> len; int B[1001] = {0};
        int B[1001] = {0}; for(i = 0; i < len; i++)
        for(i = 0; i < len; i++) cin >> A[i];
            cin >> A[i]; for(i = 1; i < len; i++)
        for(i = 1; i < len; i++) {
        { for(j = i - 1; j >= 0; j--)
            for(j = i - 1; j >= 0; j--) {
            { if(A[i] >= A[j])
                if(A[i] >= A[j]) {
                { if(B[i] <= B[j])
                    if(B[i] <= B[j]) {
                    { B[i] = B[j] + 1;
                        B[i] = B[j] + 1; }
                    } }
                } }
            } }
        } cout << GetMax(B, len) + 1<< endl;
        cout << GetMax(B, len) + 1<< endl; }
    }
 return 0;
    return 0; }
}则 B[i] = max{B[0..i-1]} + 1 前提是A[i]的数字要比该位上的数大。
 
                    
                     
                    
                 
                    
                

 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号