回溯算法模板

回溯算法模板

void backTracking(参数) {
    if(终止条件) {
      收集结果;
      return;
    }
    
    for(遍历元素) {
       处理元素;
       bakcTracking(参数);
       回溯;
    }
}

public class Test2 {

    public static void main(String[] args) {
        int[] a = {1, 2, 3, 4};
        new Test2().backTracking(a, 0);
    }

    // 全局变量
    StringBuffer sb = new StringBuffer();

    void backTracking(int[] a, int startIdx) {
        if (sb.length() == 2) { // 终止条件
            System.out.println(sb);
            return;
        }

        for (int i = startIdx; i < a.length; i++) { // 循环
            sb.append(a[i]); // 处理元素
            backTracking(a, i + 1); // 递归
            sb.deleteCharAt(sb.length() - 1); // 回溯
        }
    }
}

posted @ 2022-04-01 11:26  小路不懂2  阅读(78)  评论(0编辑  收藏  举报