Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
137423 | 林扬泉 | 递增子序列 | C++ | 解答错误 | 0 | 0 MS | 272 KB | 1061 | 2024-03-10 14:02:19 |
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N]; int r[N]; int n; int kk,kkk; void jdfs(int k,int la,int len){ if(len>=2){ kk++; } set<int> s; for(int i=k;i<=n;i++){ if((len==0||a[i]>=la)&&s.find(a[i])==s.end()){ s.insert(a[i]); r[len+1]=a[i]; jdfs(i+1,a[i],len+1); } } } void zdfs(int k,int la,int len){ if(len>=2){ kkk++; printf("["); for(int i=1;i<len;i++){ printf("%d,",r[i]); } if(kkk<kk){ printf("%d],",r[len]); } else{ printf("%d]",r[len]); } } set<int> s; for(int i=k;i<=n;i++){ if((len==0||a[i]>=la)&&s.find(a[i])==s.end()){ s.insert(a[i]); r[len+1]=a[i]; zdfs(i+1,a[i],len+1); } } } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } printf("["); jdfs(1,-10000,0); zdfs(1,-10000,0); printf("]"); return 0; }