增量构造法

public class Main1 {
static int A[] = new int[1 << 7];
static int da[] = new int[1<<7]; public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
da[i] = sc.nextInt();
} print_subset(n, A, 0,da); } } private static void print_subset(int n, int[] A, int cur,int da[]) {
// 打印当前集合
for(int i=0;i<cur;i++)
System.out.printf("%d ",da[A[i]]);        //如果不加da[]的话,这里输出的是下标值,位向量中同理
System.out.println();
int s = cur>0?A[cur-1]+1:0;        //这个表示最小值的下标,cur不等于0的时候,即cur前面还有下标元素,为了得到全部的子集,所以这里不能漏掉,便从最小的那一个选
  
                            //那为什么A[cur-1]+1就是最小的下标呢,刚刚输出的最后一个下标就是A[cur-1],所以这一个下标+1,即还未选择过的最小下标
for(int i=s;i<n;i++){
A[cur]=i;
print_subset(n, A, cur+1,da);
}
}
}

位向量法

public class Main1 {
static int b[] = new int[1 << 7];
static int da[] = new int[1 << 7]; public static void print(int n, int cur, int b[], int da[]) {
if (cur == n) {
for (int i = 0; i < n; i++) {
if (b[i] == 1)
System.out.printf("%d ", da[i]);
}
System.out.println();
return;
}
b[cur] = 1;
print(n, cur + 1, b, da);
b[cur] = 0;
print(n, cur + 1, b, da);
} public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
for (int i = 0; i < n; i++)
da[i] = sc.nextInt();
print(n, 0, b, da);
}
}
}

二进制法

public class Main1 {
public static void sort(int n,int s,String str){
for(int i=0;i<n;i++)
{
int res = s&(1<<i);//看这2的n次方个数上哪些的位数是1。
if(res != 0)
System.out.print(str.charAt(i));//然后打印子集即可。
}
System.out.println();
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();//从控制台得到字符串
int n = str.length();
for(int i=0;i<(1<<n);i++)//一共有2的n次方个子集
sort(n,i,str);
}
}

子集三种生成方法 java的更多相关文章

  1. Java中Map的三种遍历方法

    Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历.   告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...

  2. iOS——浅谈iOS中三种生成随机数方法

    ios 有如下三种随机数方法:

  3. java数组中的三种排序方法中的冒泡排序方法

    我记得我大学学java的时候,怎么就是搞不明白这三种排序方法,也一直不会,现在我有发过来学习下这三种方法并记录下来. 首先说说冒泡排序方法:冒泡排序方法就是把数组中的每一个元素进行比较,如果第i个元素 ...

  4. SuperDiamond在JAVA项目中的三种应用方法实践总结

    SuperDiamond在JAVA项目中的三种应用方法实践总结 1.直接读取如下: @Test public static void test_simple(){ PropertiesConfigur ...

  5. Java List /ArrayList 三种遍历方法

    java list三种遍历方法性能比较http://www.cnblogs.com/riskyer/p/3320357.html JAVA LIST 遍历http://blog.csdn.net/lo ...

  6. 2017.10.25 Java List /ArrayList 三种遍历方法

    java list三种遍历方法性能比较 学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入记录,然后遍历ArrayList,测试代码如下: pac ...

  7. (java)selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待

    selenium webdriver学习---三种等待时间方法:显式等待,隐式等待,强制等待 本例包括窗口最大化,刷新,切换到指定窗口,后退,前进,获取当前窗口url等操作: import java. ...

  8. iOS-浅谈iOS中三种生成随机数方法

    ios 有如下三种随机数方法:

  9. C#使用DataSet Datatable更新数据库的三种实现方法

    本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...

随机推荐

  1. 快速定位XPATH

    本文主要介绍如何快速定位WEB端的xpath. 浏览器:Chrome.火狐浏览器 两种浏览器的定位方法都是一样:按F12键,可查看开发者工具 上图,开发者工具最左上角是定位按钮,点击此按钮,再点击浏览 ...

  2. Fiddler--QuickExec

    QuickExec在Fiddler中提供了比较快捷的功能服务. 在QuickExec输入框中输入命令,能快速地得到想要的结果. 快捷键:打开Fiddler后,按“Alt+q”,可将光标定位到Quick ...

  3. Quartz.net 3.x使用总结(一)——入门介绍

    1.Quartz.net简介 Quartz.NET是一个强大.开源.轻量级的任务调度框架.任务调度在我们的开发中经常遇到,如说:每天晚上三点让程序或网站执行某些代码,或者每隔5秒种执行一个方法等.Wi ...

  4. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  5. 071、如何定制calico网络的IP池(2019-04-16 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7571272.html   在前面的学习中,我们没有特别配置,calico会自动为网络分配subnet,当然我们也可以根据 ...

  6. 什么是UDP

  7. safari中input、textarea无法输入的问题

    网址:https://www.cnblogs.com/xiayu25/p/6832748.html * { -webkit-box-sizing: border-box; -moz-box-sizin ...

  8. mysql 分库分表 ~ 柔性事务

    一 定义 TCC方案是可能是目前最火的一种柔性事务方案二 具体 内容 TCC=try(预设)-confrim(应用确认)-canal(回滚取消)三 目的 解决跨服务调用场景下的分布式事务问题,避免使用 ...

  9. IIS 一键安装及卸载

    IIS6:适用于win server 2003:: ******************* :: * 安装 :: ******************* :Install Cls @echo. &am ...

  10. windows :config windows update … 一直处于假死状态

    参考文章:http://www.cnblogs.com/teacat/p/9204225.html 环境:win7 64bit 旗舰版 问题:重启后,系统更新到35%后,一直处于假死状态,未能正确进入 ...