1 条题解
-
0
C :
#include<stdio.h> #include<stdlib.h> int main () { int a[200],b[200]={1},c[200]={1}; int N,i,j,sum; while(scanf("%d",&N)!=EOF) { for(i=0;i<N;i++) { scanf("%d",&a[i]); } for(i=0;i<N;i++) { b[i]=1; for(j=0;j<i;j++) if(a[i]>a[j]&&b[j]+1>b[i]) b[i]=b[j]+1; } for(i=N-1;i>=0;i--) { c[i]=1; for(j=N-1;j>i;j--) if(a[i]>a[j]&&c[j]+1>c[i]) c[i]=c[j]+1; } int max=0; for(i=1;i<=N;i++) { if(b[i]+c[i]>max) max=b[i]+c[i]; } sum=N-max+1; printf("%d\n",sum); } return 0; }
C++ :
#include<cstdio> using namespace std; int main() { int a[201]={0},b[201]={0},c[201]={0}; int n=0; int max1=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a[i]); } for(int i=1;i<=n;++i) { b[i]=1; for(int j=1;j<=i-1;++j) { if((a[i]>a[j])&&(b[j]+1>b[i])) { b[i]=b[j]+1; } } } for(int i=n;i>=1;--i) { c[i]=1; for(int j=i+1;j<=n;++j) { if((a[j]<a[i])&&(c[j]+1>c[i])) { c[i]=c[j]+1; } } } for(int i=1;i<=n;++i) { if(b[i]+c[i]>max1) { max1=b[i]+c[i]; } } printf("%d",n-max1+1); return 0; }
Pascal :
program ZAX; var a,a1,a2:array[1..100] of integer; i,j,max,min,tmp,n:integer; begin readln(n);for i:=1 to n do read(a[i]);min:=n+1; for i:=1 to n do begin j:=i-1;max:=0; while j>=1 do begin if (a[j]<a[i])and(a1[j]>max)then max:=a1[j];dec(j); end; a1[i]:=max+1; end; for i:=n downto 1 do begin j:=i+1;max:=0; while j<=n do begin if (a[j]<a[i])and(a2[j]>max)then max:=a2[j];inc(j); end; a2[i]:=max+1; end; for i:=1 to n do begin tmp:=n+1-(a1[i]+a2[i]);if tmp<min then min:=tmp; end; writeln(min); end.
- 1
信息
- ID
- 802
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者