递归算法:从八皇后到前缀表达式求值
1. 递归回溯算法
递归回溯是一种强大的算法技术,常用于解决需要尝试多种可能性以找到解决方案的问题。下面我们将通过八皇后问题和数独问题来详细介绍递归回溯算法的应用。
1.1 八皇后问题
八皇后问题是在一个 8x8 的棋盘上放置 8 个皇后,使得任何两个皇后都不能相互攻击(即不在同一行、同一列或同一对角线上)。
以下是解决八皇后问题的 Java 代码:
private static boolean explore(Board b, int col) {
if (col > b.size()) {
return true;
} else {
for (int row = 1; row <= b.size(); row++) {
if (b.isSafe(row, col)) {
b.place(row, col);
if (explore(b, col + 1)) {
return true;
}
b.remove(row, col);
}
}
return false;
}
}
public static void solve(Board solution) {
if (explore(solution, 1)) {