题解 | #合唱队形#

合唱队形

https://www.nowcoder.com/practice/cf209ca9ac994015b8caf5bf2cae5c98

#include<iostream>
#include<algorithm>
using namespace std;
int n,maxsum=0;
int sum[100];
void fun(int a[],int flag){
	int dp[100]={1};
	for(int i=1;i<=n;i++){
	  int max1=1;
	  for(int j=1;j<i;j++){
		if(a[i]>a[j]&&dp[j]+1>max1) max1=dp[j]+1;
	   }
	  dp[i]=max1;
   }
  if(flag==1) reverse(dp+1,dp+n+1);
   for(int i=1;i<=n;i++){
   	 sum[i]+=dp[i];
   	 if(flag==1){
   	 	if(sum[i]>maxsum) maxsum=sum[i];
		}
   }
}
int main(){
	int i,j,max=0;
	int a[100];
	for(i=1;i<=n;i++)cin>>a[i];
    fun(a,0);
    reverse(a+1,a+n+1);
    fun(a,1);
    cout<<n-maxsum+1;
}


全部评论

相关推荐

uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务