本文主要是介绍[算法] 输出 字符串的全部子组合 [dfs - 递归神技],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给定一个字符串S,其中S中的字符互不相同,输出S中字符的所有组合,如S = "abc", 则输出:空,a, b, c, ab, ac, bc, abc,
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <algorithm>using namespace std;
const int N = 1005;
void dfs(char *arr, int id, int count, char* buf) {if(arr[id] == '\0') {buf[count] = '\0';cout << buf << endl;}else {dfs(arr, id+1, count, buf);buf[count] = arr[id];dfs(arr, id+1, count+1, buf);}
}
void test(char *str) {int len = strlen(str);char *buf = new char[len+1];dfs(str, 0, 0, buf);
}
int main() {test("abcde");return 0;
}
这篇关于[算法] 输出 字符串的全部子组合 [dfs - 递归神技]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!