1 条题解
-
0
C :
#include <stdio.h> #define Max 100 int main () { int n,nu[Max],dpu[Max],dpd[Max]; while(scanf("%d",&n)!=EOF&&n) { for(int i=0;i<n;i++) { scanf("%d",&nu[i]); dpu[i]=dpd[i]=1; } for(int i=1;i<n;i++) for(int j=0;j<i;j++) if(nu[i]>nu[j]&&dpu[i]<dpu[j]+1) dpu[i]=dpu[j]+1; for(int i=n-2;i>-1;i--) for(int j=n-1;j>i;j--) if(nu[i]>nu[j]&&dpd[i]<dpd[j]+1) dpd[i]=dpd[j]+1; int max=0; for(int i=0;i<n;i++) if(max<dpu[i]+dpd[i]) max=dpu[i]+dpd[i]; printf("%d\n",n-(max-1)); } }
C++ :
#include <stdio.h> int n; int run() { int i,j,a[111],u[111],d[111]; for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++) u[i]=1; for(i=1;i<=n;i++) d[i]=1; for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) { if(a[i]<a[j]) if(u[j]<u[i]+1) u[j]=u[i]+1; if(a[i]>a[j]) { if(d[j]<u[i]+1) d[j]=u[i]+1; if(d[j]<d[i]+1) d[j]=d[i]+1; } } j=0; for(i=1;i<=n;i++) if(u[i]>j) j=u[i]; for(i=1;i<=n;i++) if(d[i]>j) j=d[i]; printf("%d\n",n-j); } int main() { scanf("%d",&n); while(n!=0) { run(); n=0; scanf("%d",&n); } return 0; }
Pascal :
var a:array[0..120]of longint; b:array[1..120]of longint; i,j,n,ma,z,ma2,ma3,ma4:longint; begin readln(n); while n<>0 do begin for i:=1 to n do read(b[i]); ma4:=0; for i:=1 to n do begin a[i]:=0;ma2:=0;ma3:=0; if i>1 then for j:=i-1 downto 1 do begin ma:=-666; for z:=j+1 to i do if (b[j]<b[z])and(a[z]>ma) then ma:=a[z]; a[j]:=ma+1; if a[j]>ma2 then ma2:=a[j]; end; if i<n then for j:=i+1 to n do begin ma:=-666; for z:=j-1 downto i do if (b[j]<b[z])and(a[z]>ma) then ma:=a[z]; a[j]:=ma+1; if a[j]>ma3 then ma3:=a[j]; end; if ma2+ma3+1>ma4 then ma4:=ma2+ma3+1; end; writeln(n-ma4); readln(n); end; end.
- 1
信息
- ID
- 1112
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者