Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
139851 | 陈家宝 | 递增子序列 | C++ | 通过 | 100 | 0 MS | 276 KB | 673 | 2024-03-26 13:46:02 |
#include<bits/stdc++.h> using namespace std; int n,a[10000]; stack<int>s; map<stack<int>,bool>mp; bool check(int t){ for(int i=t+1;i<=n;i++)if(a[i]>=a[t])return false; return true; } void dfs(int t){ if(s.size()>=2&&!mp[s]){ stack<int>st=s; int *ans=new int[s.size()]; while(!st.empty()){ ans[st.size()]=st.top(); st.pop(); } for(int i=1;i<=s.size();i++) cout<<ans[i]<<(i==s.size()?"\n\n":" "); mp[s]=true; delete[] ans; } if(check(t)) return; for(int i=t+1;i<=n;i++){ if(a[i]>=a[t]){ s.push(a[i]); dfs(i); s.pop(); } } } int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; dfs(0); return 0; }