穷举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;//恢复现场
            }
        }
    }
相关推荐
WaWaJie_Ngen1 小时前
LevOJ P2080 炼金铺 II [矩阵解法]
c++·线性代数·算法·矩阵
今后1231 小时前
【数据结构】堆、计数、桶、基数排序的实现
数据结构·算法·堆排序·计数排序·桶排序·基数排序
敲代码的嘎仔1 小时前
牛客算法基础noob59 简写单词
java·开发语言·数据结构·程序人生·算法·leetcode·学习方法
少许极端1 小时前
算法奇妙屋(四)-归并分治
java·算法·排序算法·分治·归并
fly spider1 小时前
3.数组算法
算法
Haohao+++5 小时前
Stable Diffusion原理解析
人工智能·深度学习·算法
ideaout技术团队8 小时前
leetcode学习笔记2:多数元素(摩尔投票算法)
学习·算法·leetcode
代码充电宝8 小时前
LeetCode 算法题【简单】283. 移动零
java·算法·leetcode·职场和发展
不枯石10 小时前
Matlab通过GUI实现点云的均值滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab·均值算法
不枯石10 小时前
Matlab通过GUI实现点云的双边(Bilateral)滤波(附最简版)
开发语言·图像处理·算法·计算机视觉·matlab