java编写求集合的全体子集

若求解集合中的全部子集,只需从头开始遍历即可,比如:我们想求集合{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));

      }


}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值