1 条题解

  • 0
    @ 2025-4-7 21:19:28

    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
    上传者