1 条题解
-
0
C :
#include "stdio.h" int main() { int a[1000],V[1000],Z[1000]; int i,j; int n=0; int M=0,max; char c; while(1) { if(scanf("%d",&a[n])==EOF) break; else n++; do { c=getchar(); if(c=='\n') break; else scanf("%d",&a[n]); n++; }while(1); for(i=0;i<n;i++) V[i]=Z[i]=0; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(a[j]<=a[i]&&V[i]==V[j]) V[j]++; if(a[j]>a[i]&&Z[i]==Z[j]) Z[j]++; } } max=M=0; for(i=0;i<n;i++) { if(V[i]>max) max=V[i]; if(Z[i]>M) M=Z[i]; } printf("%d\n%d\n",max+1,M+1); n=0; } return 0; }
C++ :
#include<iostream> #include<string> #include<sstream> #include<algorithm> using namespace std; //ifstream cin("missile.in"); //ofstream cout("missile.out"); const int N(1001); int h[N],f[N],g[N]; int main() { string s; while (getline(cin,s)) { istringstream is(s); int n(0); while (is>>h[n]) n++; fill(f,f+n,1); for (int i=0;i<n;i++) for (int j=0;j<i;j++) if (h[j]>=h[i]) f[i]=max(f[i],f[j]+1); int ans(1); for (int i=1;i<n;i++) if (f[i]>ans) ans=f[i]; cout<<ans<<endl; fill(g,g+n,1); for (int i=0;i<n;i++) for (int j=0;j<i;j++) if (h[j]<h[i]) g[i]=max(g[i],g[j]+1); ans=1; for (int i=1;i<n;i++) if (g[i]>ans) ans=g[i]; cout<<ans<<endl; } return 0; }
Pascal :
program jco33; var f,g:array[1..10005]of longint; i,j,k,l,n,m,ans:longint; start:boolean; function max(a,b:longint):longint; begin if a>b then exit(a); exit(b); end; begin while not eof do begin n:=0;ans:=-10; fillchar(f,sizeof(f),0); for i:=1 to 10000 do g[i]:=1; while not eoln do begin inc(n); read(f[n]); end; for i:=2 to n do begin for j:=1 to i-1 do if f[i]<=f[j] then g[i]:=max(g[i],g[j]+1); ans:=max(ans,g[i]); end; if ans=-10 then halt; writeln(ans); fillchar(g,sizeof(g),0); m:=0; for i:=1 to n do begin start:=false; for j:=1 to m do if g[j]>=f[i] then begin g[j]:=f[i]; start:=true; break; end; if not start then begin inc(m); g[m]:=f[i]; end; end; writeln(m); readln; end; end.
- 1
信息
- ID
- 2376
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者