長さNの配列を与え,最も長い単調自己増幅子シーケンスを見つけた.
2484 ワード
牛客ネットでこんな問題を見た.
長さNの配列が与えられ、最も長い単調な自己増分子配列(連続するとは限らないが順序が乱れてはならない)が見つけ出される.例えば、長さ8の配列A{1,3,5,2,4,6,7,8}が与えられると、その最も長い単調な増分子配列は{1,2,4,6,7,8}であり、長さは6である.
結局、午後になって考えが間違っていることに気づき、答えを見て明るくなったので、急いで記録しました.
回答思想としては,後者が前者より大きく,前者が増分配列の長さ+1が後者が増分配列の長さより大きい場合は,満足を示し,記述がはっきりしないと感じたので,直接コードをつけようとする.
とにかくその様子で、ゆっくりfeelでしょう、眠くて、今晩女子バレーボールの準決勝がありますが、私は本当に眠くて、女子バレーボールは頑張って、私は先に寝ます.
長さ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でしょう、眠くて、今晩女子バレーボールの準決勝がありますが、私は本当に眠くて、女子バレーボールは頑張って、私は先に寝ます.