62,614
社区成员
发帖
与我相关
我的任务
分享
/**
* @author stevenlii
*/
public class GetSet {
private String[] origin = {"1", "2", "3", "4", "5"};
private String[] targetArray;
public static void main(String[] args) {
new GetSet().doJob();
}
private void doJob() {
//获取将要分解的字符串如果转为2进制最大是几
//如字符串是3位,就是2^3。从[0 0 0]到[1 1 1]
int maxLength = (int) Math.pow(2, origin.length);
targetArray = new String[maxLength];
for (int i = 0; i < targetArray.length; i++) {
//十进制转2进制
targetArray[i] = Integer.toBinaryString(i);
}
buling();
print(0);
}
/**
* 给空位补0,凑齐位数
*/
private void buling() {
for (int i = 0; i < targetArray.length; i++) {
//位数是完整的,不需要补0
if (targetArray[i].length() == origin.length) {
continue;
}
String temp = "";
//0,1,10,11,111
for (int j = 0; j < origin.length - targetArray[i].length(); j++) {
temp += "0";
}
targetArray[i] = temp + targetArray[i];
}
}
/**
* 打印子集,len == 0,打印所有子集,len>0,打印指定长度子集
* @param len
*/
private void print(int len){
for (int i = 0; i < targetArray.length; i++) {
String s = targetArray[i];//如000,001,010
StringBuilder subset = new StringBuilder();
for (int j = 0; j < s.length(); j++) {
char item = s.charAt(j);
if (item == '1') {
subset.append(origin[j]);
}
}
if (0 == len ||subset.toString().length() == len) {
System.out.println(subset.toString());
}
}
}
}
import java.util.Scanner;
public class test10 {
static int[] s = { 1, 2, 3, 4, 5 };
static int[] t ;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入子集的元素个数:");
int c=sc.nextInt();
t=new int[c];
sub(c, 5);
}
static void sub(int x, int y) {
int a, b;
if (x == 0) {
for (int i:t) {
System.out.print(i);
}
System.out.println("");
}
for (int i = y; i > 0; i--) {
if (x > 0) {
t[x - 1] = s[i-1];
a = x - 1;
b = i - 1;
sub(a, b);
}else break;
}
}
}