提交时间:2024-03-10 13:48:48

运行 ID: 137422

#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N]; int r[N]; int n; void dfs(int k,int la,int len){ if(len>=2){ for(int i=1;i<len;i++){ printf("%d ",r[i]); } printf("%d\n",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]; dfs(i+1,a[i],len+1); } } } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } dfs(1,-10000,0); return 0; }