穷举子集合

问题描述:给定一个集合,列举出这个结合的所有非空子集合。

例如:{A,B,C},非空子集合为:{A}{B}{C}{AB}{AC}{BC}{ABC}

这里采用编码的算法,就是为每一位进行编码,0表示对应的元素不出现,1表示对应的元素出现。

那么ABC对应的编码为

0.    000            {}

1.    001            {C}

2.    010           {B}

3.    011           {BC}

4.    100           {A}

5.    101           {AC}

6.    110           {AB}

7.    111           {ABC}

这里提供两种方法,

       第一种方法fun1是自己手动将其对应的二进制位求出来,这种方法更加通用,推荐大家掌握这种方法。

       第二种方法fun2是利用Java自带的包,可以将指定的整数转换为二进制形式。

Java代码如下:

穷举子集合
穷举子集合
                        {                        String ziji=""                                                         a=a/2               System.out.println(i+"  "+       
                                String ziji=""                 String binary=Integer.toBinaryString(i);                                                                     
               System.out.println(i+"  "+                         String str="ABC"     }
View Code

输出结果为:

1 C
2 B
3 BC
4 A
5 AC
6 AB
7 ABC

1 C
2 B
3 BC
4 A
5 AC
6 AB
7 ABC

更多相关文章
  • 关于背包问题的题目,前人之述备矣,这里只讨论实现 输入: n ca w_1 v_1 w_2 v_2 ... w_n v_n 其中,n是物品总数,ca是背包大小,w_n是第n个物品的重量,v_n是第n个物品的价值 输出: v_1 x v_2 x v_3 x ... 其中,v_n是当前情况为x时背包的价 ...
  • Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must no ...
  • for穷举迭代
    for循环拥有两类:穷举:把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. 迭代:从初始情况按照规律不断求解中间情况,最终推导出结果. 案例: //单位给发了一张150元购物卡,//拿着到超市买三类洗化用品.//洗发水15元,香皂2元,牙刷5元.//求刚好花完150元,有多少种买法,/ ...
  • 递归算法求解遍历(或穷举)问题递归问题可以理解为遍历问题,必须遍历出所有的数据来,才能进行相应的运算,比如Fibonacci问题.阶乘问题,必须把每一步的值都遍历出来,然后才能做加法或乘法.递归算法解决问题的特点:(1) 必须有一个明确的递归结束条件,称为递归出口.(2) 根据当前状态的值推断下一个 ...
  • 穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕.若某个情况验证符合题目的全部条件,则为本问题的一个解:若全部情况验证后都不符合题目的全部条件,则本题无解.穷举法也称为枚举法. 用穷举法解题时,就是按照某种方式列举问题答案的过程.针对 ...
  • 特殊题型三角形、菱形、for迭代穷举
    1.三角形 for(int m = 1; m <= 10; m++) { for (int n = 1; n <= m; n++) { System.out.print("*"); } System.out.println(); } View Code for(int ...
  • 穷举法解决旅行商问题
    一.问题描述 ,一个旅行商从A点出发,需要不重复地走遍5个城市ABCDE,最后回到A.每个城市之间的花费(即权值),现在要求找出一条总花费最小的路径,即权值和为最小的路径. 二.     算法说明 1.    算法一: 登山法(贪心法)     即在每一个城市出发前比较接下来所能走的城市花费(权值) ...
  • 穷举的一种应用,计算x+2y+3z=50的非负整数解.先约束每个变量的最大值,x=50,y=25,z=50/3. #include <iostream> ;i<=;i++;j<=;j++;k<=/;k++*j+*k)==; }
一周排行
  • PythonWEB开发环境搭建及配置五之Eclipse
       Eclipse是著名的跨平台的集成开发环境(IDE).最初主要用来Java语言开发, ...
  • 在secureCRT里面:Session Options(会话选项) -> Terminal(终端) -> Appearance(显示), 将Fonts(字体)选择成 Fixedsys 将Charater ...
  • 二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y. 最大匹配:图中包含边数最多的匹配称为图的最大匹配. 完美匹配:如果所有点都在匹配边上,称这个最大匹 ...
  • 其实这个LayoutParams类是用于child view(子视图) 向 parent view(父视图)传达自己的意愿的一个东西(孩子想变成什么样向其父亲说明)其实子视图父视图可以简单理解成一个LinearLay ...
  • 公司最近业务需求,要实时同步windows与linux,linux与linux之间的数据.我们使用是sersync这个开源的软件,是由金山才子所写.项目详情请访问:http://code.google.com/p/s ...
  • chmod 改变权限位分为符号模式和绝对模符号模式的一般格式:chmod [who] operator [permission] filenamewho的含义u 文件属主权限.g 属组用户权限.o 其他用户权限.a ...
  • 一:背景     linux下的ls可以实现什么效果呢,ls有很多的选项,最为常用的选项莫过于是-l选项,列出所有文件的详细信息.本文也着重去实现ls -l.首先看下ls -l的效果.本文将会完整的去描述怎么样一步一 ...
  • 转载:http://blog.csdn.net/zbjdsbj/article/details/42387551 4.3或以下,选了图片之后,根据Uri来做处理,很多帖子都有了,我就不详细说了. 主要是4.4,如果使 ...
  • Perl、PHP、Python、Java和Ruby比较转载+整理
    从本文的内容上,写的时间比较早,而且有些术语我认为也不太准,有点口语化,但是意思到了. 问 ...
  • 首先可以通过java/jdk/bin下的java visualVM查看eclipse的内存大小和tomcat的内存大小,主要看堆,PermGen两个大小如图: 多数情况下,eclipse抛出内存溢出的错误,并不一定仅 ...