2 条题解
-
0
【参考程序】
#include<bits/stdc++.h> using namespace std; int a[1100],f1[1100],f2[1100]; int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=n;i++) { f1[i]=1; for(int j=1;j<=i-1;j++) { if(a[i]>a[j])f1[i]=max(f1[i],f1[j]+1); } } for(int i=n;i>=1;i--) { f2[i]=1; for(int j=i+1;j<=n;j++) { if(a[i]>a[j])f2[i]=max(f2[i],f2[j]+1); } } int ans=0; for(int i=1;i<=n;i++) { ans=max(ans,f1[i]+f2[i]-1); } printf("%d",ans); return 0; } -
0
【参考程序】 #include<bits/stdc++.h> using namespace std; int a[1100],f1[1100],f2[1100]; int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=n;i++) { f1[i]=1; for(int j=1;j<=i-1;j++) { if(a[i]>a[j])f1[i]=max(f1[i],f1[j]+1); } } for(int i=n;i>=1;i--) { f2[i]=1; for(int j=i+1;j<=n;j++) { if(a[i]>a[j])f2[i]=max(f2[i],f2[j]+1); } } int ans=0; for(int i=1;i<=n;i++) { ans=max(ans,f1[i]+f2[i]-1); } printf("%d",ans); return 0; }
- 1
信息
- ID
- 125
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 190
- 已通过
- 78
- 上传者