1080: 最长上升子序列Ⅰ
注意1:严格递增
注意2:本身序列为1
注意3:倒着往回找的时候,每个都要试一下,不能提前剪枝
#include <bits/stdc++.h>
using namespace std;
int n;
const int N=1010;
int num[N];
int dp[N];
int main(){
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;i++){
scanf("%d",&num[i]);
}
int m=0;
for(int i=1;i<=n;i++){
int j=i-1;
dp[i]=1;
while(j>=0){
if(num[i]>num[j])
{
dp[i]=max(dp[i],dp[j]+1);
//cout<<"dp["<<i<<"]="<<dp[i]<<endl;
m=max(m,dp[i]);
}
j--;
}
}
printf("%d\n",m);
}
return 0;
}

浙公网安备 33010602011771号