这段代码还是挺有纪念意义的,从5.20到今天5.26晚上差不多一周时间,几乎把迷宫问题写烂了,但还是远远不够,甚至现在有点分不清dfs和bfs了,刚看了一下总结:dfs:有回溯的就是说在函数里调用了自己后把之前的状态修改回来 bfs基本上就是使用了队列。废话不多数,接下来是LeetCode中的一道题,好像是45题左右。题目是这样的:一个九键输入法,每个按键上有对应的英文数字,现在输入任意的数字,求组合后的按键序列。这道题比较像bilibili一个大神讲的递归ABC排列组合,这次代码一次跑通太开心了,上代码
代码:
import java.util.Stack;
public class T9 {
public static void main(String[] args) {
char[][] ch = {{'A', 'B', 'C'}, {'D', 'E', 'F'}};
boolean[] flags = new boolean[ch.length];
dfs(ch, flags);
}
static Stack res = new Stack();
private static void dfs(char[][] ch, boolean[] flags) {
if (res.size() == 2) {
System.out.print(res + "\t");
return;
} else {
for (int i = 0; i < ch.length; i++) {
if (flags[i] == false) {
for (int j = 0; j < ch[i].length; j++) {
flags[i] = true;
res.push(ch[i][j]);
dfs(ch, flags);
flags[i] = false;
res.pop();
}
}
}
}
}
}
部分运行结果: