输出一个字符串数组所有非空子集

来源:互联网 发布:pitta mask 口罩 知乎 编辑:程序博客网 时间:2024/05/29 17:29

        前几天导师让写一个数据挖掘的算法,用到了一个求一个字符串数组子集的算法,现在总结一下,说不定下次还可以用到。

java 代码如下:

package com.xing.test;import java.util.Arrays;import java.util.LinkedList;/** *  * @author LiuYinxing * */public class Combination {public void getCombination(String[] a, int c, int i, int n, String[] b,LinkedList<String> linkedList){// a原始数组,c循环的开始值,i数组b索引,n控制递归的次数,b存放结果的数组for (int j = c; j < a.length - (n - 1); j++) {b[i] = a[j];if (n == 1) {linkedList.add(Arrays.toString(b));} else {n--;i++;getCombination(a, j + 1, i, n, b,linkedList);// 递归调用n++;//还原n,i的值i--;}}}public static void main(String[] args) {String[] a = { "1","2", "3" };LinkedList<String> linkedList = new LinkedList<>();Combination combination = new Combination();for (int n = 1; n <= a.length; n++) {String[] b = new String[n];// 存放组合结果的数组combination.getCombination(a, 0, 0, n, b,linkedList);}for (String string : linkedList) {System.out.println(string);}}}
运行结果:






0 0