AcWing 1572. 递归实现指数型枚举 II
原题链接
简单
作者:
沙漠绿洲
,
2020-08-20 12:46:46
,
所有人可见
,
阅读 532
C++ 代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, a[16], vis[16];
vector<int> ret;
void dfs(int idx){
if(idx == n + 1){
for(auto x : ret)
cout << x << " ";
cout << endl;
return;
}
dfs(idx + 1); //此数不选取
if(idx > 1 && a[idx] == a[idx - 1] && vis[idx - 1] == 0)
return; //去掉重复序列
ret.push_back(a[idx]);
vis[idx] = 1;
dfs(idx + 1); //此数选取
vis[idx] = 0;
ret.pop_back();
}
int main()
{
cin >> n;
for(int i = 1; i <= n; ++ i) cin >> a[i];
sort(a + 1, a + 1 + n);
dfs(1);
return 0;
}