vijos P1098 合唱队形

vijos P1098 合唱队形
以下是我的代码:

#include < stdio.h >
int  max( int  a, int  b)
{
    
return a>b?a:b;
}

int  main()
{
    
int a[102],len_1[101]/**//*下降序列*/,len_2[101]/**//*上升序列*/,tot[101],n,i,j,ans;
    scanf(
"%d",&n);
    
for(i=1;i<=n;i++)
      scanf(
"%d",&a[i]);
    
for(i=1;i<=n;i++)
    

       len_1[i]
=1;
       len_2[i]
=1;
    }

    
for(i=n;i>=1;i--)
     
for(j=i+1;j<=n;j++)
      
if(a[i]>a[j])//以 i 为头最长下降序列 
       len_1[i]=max(len_1[j]+1,len_1[i]);
    
for(i=1;i<=n;i++)
     
for(j=i+1;j<=n;j++)
      
if(a[i]<a[j])//以 i 为尾最长上升序列 
       len_2[j]=max(len_2[i]+1,len_2[j]);
    
/**//*
    for(i=1;i<=n;i++)
      printf("%d ",len_1[i]);
    putchar('\n');
    for(i=1;i<=n;i++)
      printf("%d ",len_2[i]);
    putchar('\n');
    //
*/

    
for(i=1;i<=n;i++)
      tot[i]
=len_1[i]+len_2[i];
    ans
=0;
    
for(i=1;i<=n;i++)
      ans
=max(ans,tot[i]);
    printf(
"%d\n",n-ans+1);
return 0;
}

你可能感兴趣的:(vijos P1098 合唱队形)