若求解集合中的全部子集,只需从头开始遍历即可,比如:我们想求集合{A,B,C,D}的全部子集,我们发现它的全部子集可以从头开始遍历{, A, AB, ABC, ABCD, AC, ACD, AD, B, BC, BCD, BD, C, CD, D},当一个链结束后比如ABCD,取出第一个元素A再进行重新开始遍历形成AC。当发现规律后,我们便可以开始编写代码:
import java.util.ArrayList;
import java.util.List;public class test6 {
public static List<String> recursionSet(String[] arr) {
List<String> list = new ArrayList<String>();
list.add("");
int i,j,k,n;
n = arr.length;
for(i = 0;i < n;i++){
String s;
s = arr[i];
list.add(s);
for(k = 1;k < n-i;k++){
for(j = i+k;j < n;j++){
s += arr[j];
list.add(s);
if(j == n-1){
s = s.substring(0, 1);
}
}
}
}
return list;
}
public static void main(String[] args) {
String s = "A B C D";
String[] arr = s.split("\t");
System.out.println(recursionSet(arr));
}