暴力递归-打印字符串全部子序列

题目:打印一个字符串的全部子序列,包括空字符串

solution:

对于字符串的每一个元素,我们都可以选择要或者不要:

 代码:

package Algorithms.ViolenceRecursive;

public class PrintAllSubsquences {

    public static void printAllSubsquence(String str) {
        char[] chs = str.toCharArray();
        process(chs, 0);
    }

    //当前来到i位置,要和不要,走两条路
    //res之前的选择,所形成的结果是str
    public static void process(char[] str, int i) {
        if (i == str.length) {
            System.out.println(String.valueOf(str));
            return;
        }
        process(str, i + 1);//要当前字符的路
        char tmp = str[i];
        str[i] = 0;
        process(str, i + 1);//不要当前字符的路
        str[i] = tmp;
    }

    public static void main(String[] args) {
        String test = "abc";
        printAllSubsquence(test);
    }
}

/**
 * abc
 * ab 
 * a c
 * a  
 *  bc
 *  b 
 *   c
 */
原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/15145506.html