列举一个n元集合的所有子集的思路要求用java实现列举一个n元集合的所有子集,一点头绪也没有,小妹拜谢!

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 16:10:19
列举一个n元集合的所有子集的思路要求用java实现列举一个n元集合的所有子集,一点头绪也没有,小妹拜谢!

列举一个n元集合的所有子集的思路要求用java实现列举一个n元集合的所有子集,一点头绪也没有,小妹拜谢!
列举一个n元集合的所有子集的思路
要求用java实现列举一个n元集合的所有子集,一点头绪也没有,小妹拜谢!

列举一个n元集合的所有子集的思路要求用java实现列举一个n元集合的所有子集,一点头绪也没有,小妹拜谢!
你试试能不能用~
import java.util.BitSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class FindSubset {
private BitSet start;
private BitSet end;
private Set subsets;
public FindSubset() {
this.start = new BitSet();
this.end = new BitSet();
this.subsets = new HashSet();
}
public void execute(int n, Set items) {
int size = items.size();
for (int i = 0; i < n; i++) {
start.set(i, true);
}
for (int i = n; i < size; i++) {
start.set(i, false);
}
for (int i = size - 1; i > size - n; i--) {
end.set(i, true);
}
for (int i = 0; i < size - n; i++) {
end.set(i, false);
}
find(items);
while (start != end) {
boolean endBit = start.get(size - 1);
int last10 = -1;
int i;
for (i = size - 1; i > 0; i--) {
boolean former = start.get(i - 1);
boolean last = start.get(i);
if (former == true && last == false) {
last10 = i - 1;
break;
}
}
if (i == 0) {
break;
} else {
if (endBit == false) {
start.set(last10, false);
start.set(last10 + 1, true);
find(items);
} else {
start.set(last10, false);
start.set(last10 + 1, true);
last10 += 1;
for (int j = last10 + 1; j < size; j++) {
if (start.get(j)) {
start.set(j, false);
start.set(last10 + 1, true);
last10 += 1;
find(items);
}
}
}
}
}
}
public void find(Set items) {
Set temp = new HashSet();
Object elements[] = items.toArray();
for (int i = 0; i < elements.length; i++) {
if (start.get(i)) {
temp.add(elements[i]);
}
}
subsets.add(temp);
}
public Set getSubsets() {
return this.subsets;
}

public void clearSubsets(){
this.subsets.clear();
}
public static void main(String[] args) {
Set items = new HashSet();
items.add("A");
items.add("B");
items.add("C");
items.add("D");
items.add("E");
items.add("F");
FindSubset fs = new FindSubset();
for (int i = 0; i < items.size(); i++) {
System.out.println((i + 1) + "元子集:");
fs.execute(i + 1, items);
Iterator iterator = fs.getSubsets().iterator();
while (iterator.hasNext()) {
Object[] subset = iterator.next().toArray();
System.out.print("{");
for (int j = 0; j < subset.length - 1; j++) {
System.out.print(subset[j] + ",");
}
System.out.print(subset[subset.length - 1]);
System.out.println("}");
}

fs.clearSubsets();
}
}
}

列举一个n元集合的所有子集的思路要求用java实现列举一个n元集合的所有子集,一点头绪也没有,小妹拜谢! 集合A的元素有a,b,c.用列举法把它的所有子集写出来 一个集合所有子集的个数公式. n元素集合中含某个元素的子集的个数比如一个元素有n个元素,则含其中某1个元素的所有子集的个数,(用n表示) 不是不是,比如集合A={1,2,,3,4,5},那么问含元素1的A的子集的个数,不是子集个数... 一个含n各元素的有限集合的所有子集是2 如果一个集合中有n个元素,那么它所有子集的数目的公式是什么?能写出集合{a,d}的所有子集吗、、? 用列举法表示下列集合 由所有满足3x+2《11的自然数构成的集合 并写出所有子集 java 求集合的所有非空子集给出一个字符串,求出所有的非空子集,=给思路或者直接给代码都可以 如果一个集合的元素有n个,那么这个集合的真子集有2^n -1个,问:为什么要减去本身才算真子集 写出集合A={x∈N|x<2}的所有子集和真子集 写出集合{1,2,3}子集,真子集,非空真子集只写出非空真子集:一个集合有n个元素,写出集合的非空真子集 已知A={x|x的平方-4x+3=0} 一,用列举法表示集合A?二:写出集合A的所有子集 C++ 求一个集合的所有子集设计一个减一算法,生成一个n元素集合的所有子集(包括空集和本身).例如一个集合{a,b,c,d},可分成两类集合:1.不包括元素a的集合(即集合{b,c,d}的所有子集);2. 已知A={x|x'-4x+3} 一,用列举法表示集合A?二:写出集合A的所有子集 (打不出平方我用 ’ 表示2 ) 集合中共有n个元素,此集合中所有真子集的个数为?,为什么! 子集,如何找出子集?集合{X∈N|X=-y+6,y∈N}的所有子集和真子集个数, 在集合中{1,2,N},任意取出一个子集,计算它的各元素之和.则所有子集的元素之和是 . 集合{a}d的子集是什么?真子集是什么?n个元素有几个子集,几个真子集,几个非空真子集?