- Java code
import java.util.Arrays;import java.util.LinkedList;import java.util.List;public class Test { public static void main(String[] args) { String[] array=new String[]{ "1","2","3","4" }; listAll(Arrays.asList(array),""); } public static void listAll(List candidate,String prefix){ System.out.println(prefix); for(int i=0;i<candidate.size();i++){ List temp = new LinkedList(candidate); listAll(temp,prefix+temp.remove(i)); } }}
这题是求一个数组里的数组合,比如1,2的数组合是1,2,12,21
这段代码我有些地方不是很明白:
- Java code
for(int i=0;i<candidate.size();i++){ List temp = new LinkedList(candidate); listAll(temp,prefix+temp.remove(i)); }
这个candidate是我困惑的地方,它每次赋值给temp的是什么?不知道我解释清楚了没有,或都哪位朋友能解释一下流程,谢谢!
------解决方案--------------------
10个数字的组合
===
10个数字的某一个 + 其余9个数字的组合
然后递归下去,就是这样。
temp.remove() 会返回被移出的那个对象
------解决方案--------------------
不错,学习了