典型问题, 01背包问题, 8皇后问题,
核心就是 找到 解空间,通常是个vector。然后穷举这个vector所有的可能值。从一条路往前走,能进则进,不能进则退回来,换条路再试
例如,在01背包问题中,解空间就是一个vector,每个element的可能值就是0或者1,所以只需要求出N!个解就行了。这种穷举解空间的过程用到了回溯。 BTW, 解空间还是个完全二叉树
import java.util.*;
public class Backtracking {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.println("input a integer");
int[] a = new int[in.nextInt()];
Backtracking b = new Backtracking();
b.search(0, a.length, a);
}
public void search(int m, int n, int[] a)
{
if(m >= n){
for(int i = 0 ; i < a.length; i++)
System.out.print(a[i]);
System.out.print("\n");
}else{
a[m] =