题解 | #合唱队#

合唱队

http://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

首先必须有两个序列划分,一个是最长上升序列,一个是最长下降序列,我们需要分别求出每个序列的元素。

     int stu[n];//学生数组
     int minNum=n;

求最长上升序列

    dp_increase[0]=1;
    for(int i=1; i<n;i++){
    dp_increase[i]=1;
    if(stu[j]<stu[i] && dp_increase[j]+1>dp_increase[i]){
    	dp_increase[i]=dp_increase[j]+1;
    }

求最长下降序列

db_decrease[n-1]=1;
for(int i=n-2;i>=0;i--){
dp_decrease[i]=1;
 if(stu[j]<stu[i] && dp_increase[j]+1>dp_increase[i]){
	dp_increase[i]=dp_increase[j]+1;
}

求需要去除几个学生

	if(n-(dp_increase[i]+dp_decrease[i]-1)<minNum)
    minNum =n-(dp_increase[i]+dp_decrease[i]-1);
全部评论

相关推荐

06-07 19:59
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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