Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
113948 | 毛泓博(做题专用,大号Fess) | 递增子序列 | C++ | 通过 | 100 | 0 MS | 272 KB | 695 | 2023-12-04 18:15:37 |
#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; }