- 合唱队形
- 2017-10-29 20:43:32 @
心力交瘁,搞了好几个小时就是通不过。求大神看看代码哪错了
#include<stdio.h>
#include<stdlib.h>
int sta[150];
int order[150];
int result[150];
int up(int low,int high);
int down(int low,int high);
int main(void)
{
int n=0,i,answer=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&sta[i]);
}
for(i=1;i<=n;i++)
{
order[i]=up(1,i)+down(i,n)-1;
}
for(i=1;i<=n;i++)
{
if(answer<order[i]) answer=order[i];
}
printf("%d",n-answer);
}
int up(int low,int high)
{
int i,j;
result[low]=1;
if(low==high) return 1;
for(i=low+1;i<=high;i++)
{
int temp=0;
for(j=low;j<i;j++)
{
if(sta[i]>sta[j])
{
if(temp<result[j]) temp=result[j];
}
}
result[i]=temp+1;
}
return result[high];
}
int down(int low,int high)
{
int i,j;
result[low]=1;
if(low==high) return 1;
for(i=low+1;i<=high;i++)
{
int temp=0;
for(j=low;j<i;j++)
{
if(sta[i]<sta[j])
{
if(temp<result[j]) temp=result[j];
}
}
result[i]=temp+1;
}
return result[high];
}