中易网

java 深度优先搜索(回溯法)求集合的幂集

答案:2  悬赏:50  
解决时间 2021-03-22 15:37
如题,用java写一个方法用于求一个集合的幂集,怎么写代码呢?希望可以给出注释,谢谢。
最佳答案
import java.util.ArrayList;
import java.util.List;

public class BackTrack {
public static void main(String[] args) {
//初始化一个集合,放在list里面
List list=new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("f");
List li=new ArrayList();
PowerSet(0,list,li);
}
//回溯法求幂集
public static void PowerSet(int i,List list,List li){

if(i>list.size()-1){System.out.println(li);}
else{
li.add(list.get(i));//左加
PowerSet(i+1,list,li); //递归方法
li.remove(list.get(i)); //右去
PowerSet(i+1, list, li);
}
}

}

注:该方法采用中序遍历二叉树(实际这棵树是不存在的)。对于第一个元素,左节点加进去,右节点去掉。对于第i一个节点,左加,右去。直到i大于元素的总个数。

输出结果:
[1, 2, 3, 4]
[1, 2, 3]
[1, 2, 4]
[1, 2]
[1, 3, 4]
[1, 3]
[1, 4]
[1]
[2, 3, 4]
[2, 3]
[2, 4]
[2]
[3, 4]
[3]
[4]
[]
全部回答
虽然我很聪明,但这么说真的难到我了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
常见的战场形容,两个字,后面是战
桥式起重机的司机每天连续应工作多少小时
延安市煜城阳光抵御花园五证齐全吗
怀孕后期夜里睡不着觉怎么办?
怎样晾晒鲜桂圆
新乡哪有卖八哥狗的?多少钱一只?
用日语说中国城市名
抗白光干扰6500LUX是什么意思
普通白铁皮有阻挡电磁辐射的作用吗?为什么电
您好。请问您确定中国煤炭工业医学杂志是生物
三个月宝宝白天睡觉总哭醒怎么回事
有买过曲善宝小儿疝气带的吗?效果怎么样?刚
宁波到温州巿文成县高速怎么开
1小时25分钟=()小时,用分数表示,为什么?
头发已经掉快一年了用柏枝泡酒管用不?
推荐资讯
现在还是农村户口的知青怎么办退休吗?
广安前锋至重庆九龙坡黄桷坪有多少公里自驾
西餐中的红菜汤怎么做
现在是车只买交强险可以上路吗
交通事故什么情况下法院才会认定无偿还能力?
家居装修是装中央空调好呢还是柜机挂机好呢?
成语形容没人理自己
关于矢车菊的描写
成都望子成龙学校
电饭锅上的保温开关加热吗
成都哪家酒吧蹦迪好玩?
中石化镇海炼化生活区周边配套设施怎么样?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?