DFS|使用DFS(深搜)遍历所有的序列所有的子组合(子序列)(排列组合中的组合)

#include #include #include using namespace std; vector visit; vector res_vec; vector> ans_vec; int n; void dfs(int i){ if(i>=n){ vector new_vec; for(int j=0; j>类型的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<

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

【DFS|使用DFS(深搜)遍历所有的序列所有的子组合(子序列)(排列组合中的组合)】注解:
DFS|使用DFS(深搜)遍历所有的序列所有的子组合(子序列)(排列组合中的组合)
文章图片

例如本例中结果为32行,即 25 = 32

    推荐阅读