長さNの配列を与え,最も長い単調自己増幅子シーケンスを見つけた.

2484 ワード

牛客ネットでこんな問題を見た.
長さNの配列が与えられ、最も長い単調な自己増分子配列(連続するとは限らないが順序が乱れてはならない)が見つけ出される.例えば、長さ8の配列A{1,3,5,2,4,6,7,8}が与えられると、その最も長い単調な増分子配列は{1,2,4,6,7,8}であり、長さは6である.
結局、午後になって考えが間違っていることに気づき、答えを見て明るくなったので、急いで記録しました.
回答思想としては,後者が前者より大きく,前者が増分配列の長さ+1が後者が増分配列の長さより大きい場合は,満足を示し,記述がはっきりしないと感じたので,直接コードをつけようとする.
#include
#include
using namespace std;
int maxLen(int *a,int n)
{
    vector<int> vlen(n,1);
    int maxLen=1;
    for(int i=1;ifor(int j=0;jif(a[i]>a[j]&&vlen[j]+1>vlen[i])
                vlen[i]=vlen[j]+1;
        }
        if(maxLenreturn maxLen;
}
int main()
{
    int T;
    while(cin>>T)
    {
        while(T)
        {
            --T;
            int n;
            cin>>n;
            int *a=new int[n];
            for(int i=0;icin>>a[i];
            cout<delete []a;
        }
    }

    return 0;
}

とにかくその様子で、ゆっくりfeelでしょう、眠くて、今晩女子バレーボールの準決勝がありますが、私は本当に眠くて、女子バレーボールは頑張って、私は先に寝ます.