1 条题解
-
0
C :
#include<stdio.h> int num[50]; int num1[50]; int m(int a,int b){ return a>b?a:b; } int main(){ int n,i,tmax,j; while(scanf("%d",&n)!=EOF){ if(n==0) break; for(i=0;i<n;i++){ scanf("%d",&num[i]); } for(i=0;i<n;i++){ tmax=1; for(j=0;j<i;j++){ if(num[j]>=num[i]){ tmax=m(tmax,num1[j]+1); } } num1[i]=tmax; } tmax=1; for(i=0;i<n;i++){ tmax=m(tmax,num1[i]); } printf("%d\n",tmax); } return 0; }
C++ :
#include <stdio.h> int n; int run() { int i,j,a[33],b[33]; for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++) b[i]=1; for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) if(a[i]>=a[j]) if(b[j]<b[i]+1) b[j]=b[i]+1; j=0; for(i=1;i<=n;i++) if(b[i]>j) j=b[i]; printf("%d\n",j); } int main() { scanf("%d",&n); while(n!=0) { run(); n=0; scanf("%d",&n); } return 0; }
Pascal :
var i,j,k,n,ans:longint; a,c:array[0..100] of longint; begin readln(n); while n<>0 do begin for i:=1 to n do read(a[i]); fillchar(c,sizeof(c),0); c[n]:=1; for i:=n-1 downto 1 do begin ans:=0; for j:=i+1 to n do if (a[i]>=a[j])and(c[j]>ans) then ans:=c[j]; c[i]:=ans+1; end; ans:=0; for i:=1 to n do if c[i]>ans then ans:=c[i]; writeln(ans); readln(n); end; end.
Java :
import java.io.PrintStream; import java.util.Scanner; public class Main { public static void main(String[] args ) { int n,i,j; int[] a=new int[30]; int[] b=new int[30]; Scanner sc = new Scanner(System.in); PrintStream ps = new PrintStream(System.out); while(sc.hasNext()) { n= sc.nextInt(); if(n==0)break; for(i=0;i<n;i++) {a[i]= sc.nextInt();b[i]=1;} for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(a[i]>=a[j]) if(b[j]<b[i]+1) b[j]=b[i]+1; j=0; for(i=0;i<n;i++) if(b[i]>j)j=b[i]; ps.printf("%d\n",j); } } }
- 1
信息
- ID
- 1110
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者