1 条题解

  • 0
    @ 2025-4-12 22:06:17

    C :

    #include<stdio.h>
    int main()
    {
    	int i,j,k,n,x[101],y[101],t,temp;
    	while(scanf("%d",&n)==1)
    	{
    		t=0;
    		for(i=0;i<n;i++)
    			scanf("%d",&x[i]);
    		for(i=0;i<n;i++)
    		{
    			temp=0;
    			for(j=0;j<101;j++)
    				y[j]=240;
    			y[0]=y[n]=-1;
    			for(j=0;j<i;j++)
    			{
    				k=0;
    				while(x[j]>y[k])
    				{
    					if(x[j]>y[k]&&x[j]<y[k+1])y[k+1]=x[j];
    					k++;
    				}
    			}
    			for(j=i;j>0;j--)if(x[i]>y[j]){temp=j;break;}
    			for(j=n-1;j>i;j--)
    			{
    				k=n;
    				while(x[j]>y[k])
    				{
    					if(x[j]>y[k]&&x[j]<y[k-1])y[k-1]=x[j];
    					k--;
    				}
    			}
    			for(j=i+1;j<n;j++)if(x[i]>y[j]){temp+=n-j;break;}
    			if(t<temp)t=temp;
    		}
    		printf("%d\n",n-t-1);
    	}
    	return 0;
    }
    

    C++ :

    #include <stdio.h>
    #include <string.h>
    int i,j;
    int n;
    int left[102], right[102];
    int arr[250];
    
    void init_left()
     {
      for (i = 0; i < n; ++ i) 
      {
        int max = 1;
        for (j = 0; j < i; ++ j) 
    	{
          if (arr[i] > arr[j])
            max = max > left[j] + 1 ? max : left[j] + 1;
        }
        left[i] = max;
      }
    }
    
    void init_right()
     {
      for (i = n - 1; i >= 0; -- i)
       {
        int max = 1;
        for (j = i + 1; j < n; ++ j)
    	 {
          if (arr[i] > arr[j])
          {
          	if(max<=right[j]+1)
          	{
          		max=right[j]+1;
          	}
          }
           // max = max > right[j] + 1 ? max : right[j] + 1;
        }
        right[i] = max;
      }
    }
    
    int init()
     {
      if (scanf("%d", &n) == EOF) 
             return 0;
      for (i = 0; i < n; ++ i) 
             scanf("%d", &arr[i]);
      return 1;
    }
    
    int solve()
     {
    	int i,temp;
      init_left();
      init_right();
      int min = n;
      for (i = 0; i < n; ++ i) 
      {
        temp = n - (left[i] + right[i] - 1);
        if(min>=temp)
        {
        	min=temp;
        }
      
        //min = min < temp ? min : temp;
      }
      return min;
    }
    
    int main() 
    {
    //	freopen("ininin.txt","r",stdin);
    //	freopen("out.out","w",stdout);
      while (init()!=0) 
      {
        printf("%d\n", solve());
      }
      return 0;
    }
    
    
    • 1

    信息

    ID
    2845
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者