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

package com.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); 

     } 

  }

}
--------------------------------------------------------------------------------------------------

 

posted @ 2018-10-17 16:38  军999  阅读(461)  评论(0)    收藏  举报