蒟蒻求助站外题,违规紫衫
  • 板块灌水区
  • 楼主Manor
  • 当前回复5
  • 已保存回复7
  • 发布时间2024/8/17 15:16
  • 上次更新2024/8/17 17:58:18
查看原帖
蒟蒻求助站外题,违规紫衫
1246557
Manor楼主2024/8/17 15:16

这道一本通的题目,我第九个测试点WA了,90分求调

代码附上!(我代码写的有点乱,不好意思)

#include<bits/stdc++.h>
using namespace std;
int a[5005],dp[5005],n,ans,flag;
vector<int> vec;
void dfs(int k){
	vec.push_back(a[k]);
	if(vec.size()==ans){
		if(!flag){
			for(int i=0;i<vec.size();i++){
				cout<<vec[i];
				if(i!=vec.size()-1){
					cout<<' ';
				}
			}
			flag++;
		}
		return;
	}
	if(vec.empty() or a[k]>=vec.back()){
		for(int i=k+1;i<n;i++){
			if(a[i]>=a[k]){
				dfs(i);
			}
		}
	}
	else{
		return;
	}
	vec.pop_back();
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		dp[i]=1;
	}
	for(int i=1;i<n;i++){
		for(int j=0;j<=i-1;j++){
			if(a[i]>=a[j]){
				dp[i]=max(dp[i],dp[j]+1);
				ans=max(ans,dp[i]);
			}
		}
	}
	cout<<"max="<<ans<<endl;
	for(int i=0;i<n;i++){
		dfs(i);
		if(flag){
			return 0;
		}
	}
	return 0;
}```
2024/8/17 15:16
加载中...