就是dfs,有个好听的名字叫回溯,其实就是穷举法,这种算法的时间复杂度为n^level ,效率还是很低的。
下面举一个例子:给一个字符数组遍历其所有的元素,输出所有的可能情况
import java.util.ArrayDeque; import java.util.Deque; public class DFSTest { public static void main(String[] args) { Character[] p = {'A', 'B', 'C'}; dfs(p , new ArrayDeque<>()); } /** * 遍历所有的元素,输出所有的可能情况 **/ private static void dfs(Character[] p, Deque<Character> res) { if (res.size() == p.length) { System.out.println(res); return; } for (int i = 0; i < p.length; i++) { Character c = p[i]; if (c != null) { res.push(c); p[i] = null; dfs(p, res); res.pop(); p[i] = c; } } } }