下面代码求最长上升子序列(LIS)长度。输入为 5 1 7 3 5 9(首数 5 为元素个数 n,随后 5 个数为 1 7 3 5 9),输出是:
int n,i,j,ans=-1; cin>>n;
for(i=1;i<=n;i++){ cin>>a[i]; f[i]=1; }
for(i=1;i<=n;i++)
for(j=1;j<i;j++)
if(a[j]<a[i]) f[i]=max(f[i], f[j]+1);
for(i=1;i<=n;i++){ ans=max(ans,f[i]); cout<<f[i]<<" "; }
cout<<ans<<endl;
- A. 9 7 5 1 1 9
- B. 1 2 2 3 4 4
- C. 1 3 5 7 9 9
- D. 1 1 1 1 1 1
正确答案:B