[算法] 输出 字符串的全部子组合 [dfs - 递归神技]
2013-02-05 16:35
281 查看
给定一个字符串S,其中S中的字符互不相同,输出S中字符的所有组合,
如S = "abc", 则输出:空,a, b, c, ab, ac, bc, abc,
如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 - 递归神技]
- [算法] 字符串的全排列 [dfs - 递归神技]
- [算法] 字符串的全排列 [dfs - 递归神技]
- 算法思维(递归)训练:输出字符串字符的全排列
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 输出字符串的所有全排列(递归法和非递归,非递归采用组合数学的字典序)
- 算法思维(递归)训练:输出字符串长度为M的子序列
- 使用递归输出字符串的组合
- 算法 输出字符串字符的任意组合
- 字符串组合算法-改进版避免无效递归
- 剑指Offer28字符串的排列(递归和非递归实现)扩展有重复元素的排列,字符串的组合种类
- 关于算法—— 一维字符串数组之间组合问题的C#实现
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合(二)
- 【算法-分治】从数组中取出n个元素的所有组合(需要深入理解递归)
- 每天一道算法题(21)——字符串的全排列和组合算法
- 用递归的方法将一个整数n转化为字符串(不是调用函数,直接输出)
- 字符串逆序输出与main函数的递归调用
- 字符串的全排列和组合算法
- JAVA基础算法——将字符串按照字典倒序排序并输出
- 字符串的排列及组合算法