递归、搜索与回溯-综合练习:22.优美的排列

题目链接:526. 优美的排列(中等)

算法原理:

解法:DFS

Java代码:

java 复制代码
class Solution {
    //526. 优美的排列
    //吴小哲写的跟我这个大差不差
    int ret;
    //int[] path;
    boolean[] check;
    public int countArrangement(int n) {
        ret=0;
        //path=new int[n+1];//是n+1而不是n
        //for(int i=1;i<=n;i++) path[i-1]=i;
        check=new boolean[n+1];//是n+1而不是n
        dfs(n,1);//索引开始为1
        return ret;
    }
    public void dfs(int n,int pos){
        if(pos>n){ret++;return;}
        for(int i=1;i<=n;i++){
            if(!check[i]&&(i%pos==0||pos%i==0)){
                //我们要保证每个数字只使用一次,而不是每个位置只使用一次
                check[i]=true;//所以用i,check[i]=true表示i已经被使用了
                //path[pos]=i;
                dfs(n,pos+1);
                check[i]=false;//恢复现场
            }
        }
        // if(!check[pos]){
        //     for(int i=1;i<=n;i++){
        //         if(i%path[pos]==0||path[pos]%i==0){
        //             check[pos]=true;
        //             dfs(n,pos+1);
        //             check[pos]=false;
        //         }
        //         check[pos]=true;
        //     }
        // }
    }
}
相关推荐
海南java第二人2 分钟前
SpringBoot启动流程深度解析:从入口到容器就绪的完整机制
java·开发语言
问今域中4 分钟前
Spring Boot 请求参数绑定注解
java·spring boot·后端
星火开发设计6 分钟前
C++ queue 全面解析与实战指南
java·开发语言·数据结构·c++·学习·知识·队列
rgeshfgreh8 分钟前
Java+GeoTools+PostGIS高效求解对跖点
java
鱼跃鹰飞9 分钟前
DDD中的防腐层
java·设计模式·架构
计算机程序设计小李同学11 分钟前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序
练习时长一年23 分钟前
LeetCode热题100(杨辉三角)
算法·leetcode·职场和发展
lzllzz2339 分钟前
bellman_ford算法
算法
栈与堆1 小时前
LeetCode 19 - 删除链表的倒数第N个节点
java·开发语言·数据结构·python·算法·leetcode·链表
sunfove1 小时前
麦克斯韦方程组 (Maxwell‘s Equations) 的完整推导
线性代数·算法·矩阵