如果我把题目中的条件反过来,只更改dp部分的大于小于号可以实现吗?
查看原帖
如果我把题目中的条件反过来,只更改dp部分的大于小于号可以实现吗?
261262
WaltVBAlston楼主2021/7/13 20:18

RT,比如3 2 1 2 3 4对于此问题的代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,a[105],f[105],s[105],ans=-100;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		f[i]=1;
		s[i]=1;
	}
	for(int i=n-1;i>=1;i--){
		for(int j=i+1;j<=n;j++)
			if(a[i]<a[j])
				f[i]=max(f[i],f[j]+1);
	}
	for(int i=2;i<=n;i++){
		for(int j=1;j<i;j++)
			if(a[i]<a[j])
				s[i]=max(s[i],s[j]+1);
	}
	for(int i=1;i<=n;i++)
		ans=max(ans,s[i]+f[i]-1);
	cout<<n-ans;
	return 0;
}
2021/7/13 20:18
加载中...