1 条题解

  • 0
    @ 2025-2-14 21:20:41

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