1 条题解
-
0
C :
#include <stdio.h> int dp[1001]; int a[1001]; int Max(int a,int b) { if(a>b) return a; else return b; } int main() { int n,i,max,index,j,b; while(scanf("%d",&n)!=EOF) { max=-99999; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { dp[i]=1; for(j=0;j<=i-1;j++) { if(a[j]<a[i]&&dp[i]<dp[j]+1) dp[i]=Max(1,dp[j]+1); } if(max<dp[i]) max=dp[i]; } printf("%d\n",max); } return 0; }
C++ :
#include <bits/stdc++.h> using namespace std; int main() { int n; //freopen("F:\\QQDownlaod\\Laputa\\2015.3.23\\0320\\acm\\as\\test.in","r",stdin); while(~scanf("%d",&n)){ int num[1005]; for (int i=0;i<n;i++) scanf("%d",&num[i]); int d[1005]; memset(d,0,sizeof(d)); d[0]=1; for (int i=1;i<n;i++){ int ans=0; for (int s=0;s<i;s++){ if (num[i]>num[s]) ans=max(ans,d[s]); } d[i]=ans+1; } int ans=0; for (int i=0;i<n;i++){ ans=max(ans,d[i]); } printf("%d\n",ans); } return 0; }
- 1
信息
- ID
- 870
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者