采用暴力递归的方式解决。
举个例子:
有字符串“abc”,字符串长度为3,下标分别是0,1,2。则决策的过程一共有三个,令初始序列为空字符串。分别是:
0:此时有两种情况,要不要'a',如果要,子序列变为“a”;如果不要则还是空字符串;
1:此时有两种情况,要不要‘b’,加上上一步的两种这里就有4种情况,这里不一一列举;
2:此时有两种情况,要不要‘c’,加上上一步的四种情况这里就有8种情况。
如下图所示:(此图出处见水印)
下面给出代码实现:
package com.gxu.dawnlab_algorithm8;
/**
* 打印一个字符串的全部子序列,包括空字符串
* @author junbin
*
* 2019年7月12日
*/
public class PrintAllSubsquences {
public static void pringAllSub(char[] str,int i,String res){
if(i == str.length){
System.out.println(res);
return;
}
//两种情况
pringAllSub(str,i+1,res);
pringAllSub(str,i+1,res + str[i]);
}
public static void main(String[] args) {
String str = "abc";
pringAllSub(str.toCharArray(),0,"");
}
}