【发布时间】:2015-04-10 01:16:50
【问题描述】:
我正在尝试使用给定的一些伪代码来递归实现 Power Set 生成器,但是当给定一个像“abc”这样的字符串时,而不是有集合
{}、{a}、{b}、{c}、{a,b}、{a,c}、{b,c} 和 {a,b,c},
我得到 {}、{0}、{1}、{2}、{0,1} 等。
public static ArrayList GenerateSubsets(String setString) {
ArrayList A = new ArrayList<String>();
ArrayList temp = new ArrayList<String>();
if(setString.length() > 0) {
temp = GenerateSubsets(setString.substring(0,setString.length() - 1));
for(int i = 0; i < temp.size(); i++) {
System.out.println("Temp i: "+temp.get(i));
A.add(temp.get(i));
A.add(temp.get(i) + " " + (setString.length() - 1));
}
return A;
}
else
A.add("");
return A;
}
这是直接基于伪代码的,为什么不能正常工作?
编辑:这是测试
public static void main(String[] args) {
ArrayList one = GenerateSubsets("abcd");
for(int i = 0; i < one.size(); i++) {
System.out.print(one.get(i)+ ", ");
if(i%5 == 0) {
System.out.println("");
}
}
}
我得到了(没有换行符)的输出
, 3, 2, 2 3, 1, 1 3, 1 2, 1 2 3, 0, 0 3, 0 2, 0 2 3, 0 1, 0 1 3, 0 1 2, 0 1 2 3,
【问题讨论】:
-
println语句打印什么?它是否打印正确的值? -
我在上面添加了测试和输出
-
您似乎在添加索引而不是这些索引处的值。