回溯

模板一

private void helper(..., int[] used) {
    // 1. 判断全部成功, return
    // 2. for 0 --> N
        // 3. 单个成功: used[i] = true
        // helper(..., used);
        // 4. 单个回退: used[i] = false
}
private void helper(int N, int pos, int[] used) {
    if (pos > N) {
        count++;
        return;
    }

    for (int i = 1; i <= N; i++) {
        if (used[i] == 0 && (i % pos == 0 || pos % i == 0)) {
            used[i] = 1;
            helper(N, pos + 1, used);
            used[i] = 0;
        }
    }
}

results matching ""

    No results matching ""