jerry


私信TA

用户名:cleverjerry

访问量:3885

签 名:

这个人很懒,什么都没有写~

等  级
排  名 2481
经  验 2190
参赛次数 0
文章发表 32
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

这道题其实就是从前和从后来求两个不下降序列。
b[i]:从第i个数开始的最长不下降序列
c[i]:从第i个数结束的最长不下降序列
类似与登山。


无标题.png

注意事项:

注意>号和<号!
参考代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[1005],b[1005],c[1005],ans;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		b[i]=1;
		for(int j=1;j<=i-1;j++){
			if(a[i]>a[j]&&b[i]<b[j]+1){
				b[i]=b[j]+1;
			}
		}
	}
	for(int i=n;i>=1;i--){
		c[i]=1;
		for(int j=i+1;j<=n;j++){
			if(a[i]>a[j]&&c[i]<c[j]+1){
				c[i]=c[j]+1;
			}
		}
	}
	for(int i=1;i<=n;i++){
		if(b[i]+c[i]>ans)ans=b[i]+c[i];
	}
	cout<<n-ans+1;
	return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区