求助,为什么正着递减不行?感谢
查看原帖
求助,为什么正着递减不行?感谢
421128
Addrian楼主2023/9/25 19:40
#include<iostream>
#include<cstdio>
using namespace std;
int z[105],j1[105],n,a[105],maxx=0;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		z[i]=1;
		j1[i]=1;
	}
	for(int i=2;i<=n;i++){//递增 
		for(int j=1;j<=i-1;j++){
			if(a[i]>a[j]){
				z[i]=max(z[i],z[j]+1); 
			}
		}
	}
	for(int i=2;i<=n;i++){//递减 
		for(int j=1;j<=i-1;j++){
			if(a[i]<a[j]){
				j1[i]=max(j1[i],j1[j]+1);
			}
		}
	}
	for(int i=1;i<=n;i++){
		maxx=max(maxx,z[i]+j1[i]-1);
	}
	cout<<n-maxx;
	return 0;
} 
2023/9/25 19:40
加载中...