Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
113920 | 陈志轩 | 递增子序列 | C++ | 解答错误 | 0 | 0 MS | 256 KB | 1038 | 2023-12-04 13:54:43 |
#include<bits/stdc++.h> using namespace std; int n,a[114514],res[114514]; vector <vector <int> > ans; void dfs(int x,int len,int lst){ if (x > n && len <= 1){ return ; } if (x > n && len >= 2){ vector <int> vec; for (int i = 1;i <= len;i++){ vec.push_back(res[i]); } ans.push_back(vec); return ; } if (a[x] >= lst){ res[len + 1] = a[x]; dfs(x + 1,len + 1,a[x]); res[len + 1] = 0; } dfs(x + 1,len,lst); } bool cmp(vector <int> a,vector <int> b){ if (a.size() == b.size()){ for (int i = 0;i < min(a.size(),b.size());i++){ if (a[i] < b[i]){ return true; } if (a[i] > b[i]){ return false; } } } return a.size() < b.size(); } signed main(){ cin>>n; for (int i = 1;i <= n;i++){ cin>>a[i]; } dfs(1,0,0); sort(ans.begin(),ans.end(),cmp); ans.erase(unique(ans.begin(),ans.end()),ans.end()); for (int i = 0;i < ans.size();i++){ for (int j = 0;j < ans[i].size();j++){ cout<<ans[i][j]<<' '; } cout<<'\n\n'; } return 0; }