穷举vs暴搜vs深搜vs回溯vs剪枝系列一>优美的排列

题目:


解析:

部分决策树:


代码设计:


代码:

java 复制代码
private int count;
    private boolean[] check;
    public int countArrangement(int n) {
        check = new boolean[n+1];
        dfs(n,1);
        return count;
    } 

    private void dfs(int n, int pos){
        if(pos == n+1){
            count++;
            return;
        }

        for(int i = 1; i <= n; i++){
            if(check[i] == false && (i % pos == 0 || pos % i == 0)){
                check[i] = true;
                dfs(n,pos+1);
                check[i] = false;//恢复现场
            }
        }
    }
相关推荐
CountingStars61933 分钟前
梯度下降算法的计算过程
深度学习·算法·机器学习
lisanndesu1 小时前
栈 (算法十二)
算法·
qystca2 小时前
洛谷 B3715 分解质因子 2 C语言
算法
孑么2 小时前
力扣 全排列
java·算法·leetcode·职场和发展
余辉zmh2 小时前
【优选算法篇】:分而治之--揭秘分治算法的魅力与实战应用
c++·算法
qingy_20462 小时前
【算法】复制含有随机指针节点的链表
数据结构·算法·链表
Lenyiin2 小时前
第424场周赛:使数组元素等于零、零数组变换 Ⅰ、零数组变换 Ⅱ、最小化相邻元素的最大差值
c++·算法·leetcode·周赛·lenyiin
hummhumm2 小时前
第32章 汇编语言 - 实践项目:小型操作系统内核(一)
开发语言·汇编·数据库·算法·操作系统·程序设计·高级语言
_extraordinary_2 小时前
stack和queue专题
算法·queue·stack
刘乐去哪儿了2 小时前
TARE-Planner自动探索算法源码学习笔记
笔记·学习·算法