题目描述
DFS指数型枚举
样例
储存结果
#include<iostream>
#include<vector>
using namespace std;
int n, m;
const int N = 25;
vector<vector<int>> ways;
int st[N];
void dfs(int u)
{
if(u == n)
{
vector<int> way;
for(int i = 0; i < n;i ++)
if(st[i] == 1)
way.push_back(i + 1);
ways.push_back(way);
return;
}
st[u] = 2;//不选
dfs(u+1);
st[u] = 0;
st[u] = 1;//选
dfs(u+1);
st[u] = 0;
}
int main()
{
cin >> n;
dfs(0);
for(int i = 0; i < ways.size();i ++)
{
for(int j = 0; j < ways[i].size(); j++)
{
cout << ways[i][j] << " ";
}
puts("");
}
return 0;
}
#include<iostream>
#include<vector>
using namespace std;
int n, m;
const int N = 25;
int st[N];
void dfs(int u)
{
if(u == n)
{
for(int i = 0; i < n;i ++)
if(st[i] == 1)
cout << i+1 << " ";
puts("");
return;
}
st[u] = 2;//不选
dfs(u+1);
st[u] = 0;
st[u] = 1;//选
dfs(u+1);
st[u] = 0;
}
int main()
{
cin >> n;
dfs(0);
return 0;
}