#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
vector<int> visit;
vector<int> res_vec;
vector<vector<int>> ans_vec;
int n;
void dfs(int i){
if(i>=n){
vector<int> new_vec;
for(int j=0;j<n;j++)
if(visit[j]==1)
new_vec.push_back(res_vec[j]);
ans_vec.push_back(new_vec);//结果保存到vector<vector<int>>类型的vector容器里
return;
}
visit[i]=0;
dfs(i+1);
visit[i]=1;
dfs(i+1);
}
int main()
{
cin>>n;
getchar();
for(int i=1;i<=n;i++)
{
visit.push_back(1);
res_vec.push_back(i);
}
dfs(0);
for(auto v:ans_vec){//输出结果
for(auto i:v)
cout<<i<<" ";
puts("");
}
return 0;
}
Sample Input
5
Sample Output
5
4
4 5
3
3 5
3 4
3 4 5
2
2 5
2 4
2 4 5
2 3
2 3 5
2 3 4
2 3 4 5
1
1 5
1 4
1 4 5
1 3
1 3 5
1 3 4
1 3 4 5
1 2
1 2 5
1 2 4
1 2 4 5
1 2 3
1 2 3 5
1 2 3 4
1 2 3 4 5
注解:
例如本例中结果为32行,即 25 = 32
版权声明:本文为qq_41246972原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。