【发布时间】:2022-11-23 01:50:08
【问题描述】:
{1, 2, 3} 的幂集是:
{{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
我在 java 中有一个字符串数组,
String elements={"apple","mango","banana"};
String set[]=elements.split("[ ,]+");
如何按数学顺序打印此数组的幂集? (我试过位操作方法,它没有按顺序给出解决方案!)
我的位操作方法!没有给出要求的结果!
static void printPowerSet(String[] set) {
long pset = (long) Math.pow(2, set.length);
System.out.print("Power Set is \n{");
for (int i = 0; i < pset; i++) {
System.out.print("{");
for (int j = 0; j < set.length; j++) {
if ((i & (1 << j)) > 0){
System.out.print(set[j] + " ");
}
if (i == 0 && j==0 )
System.out.print(" ");
}
System.out.println("}");
}
System.out.println(" } \n");
}
【问题讨论】:
-
这是一个足够复杂的算法,您不应该将其作为代码的一部分打印 - 返回一组集合并使用单独的方法来打印它们。它会更灵活,更容易调试。
-
此外,在询问有关 SO 的问题时,您应该确切地告诉我们出了什么问题 - 如果不是想要的结果,这会给出什么结果?
-
您还应该清楚“数学顺序”的含义。