递归、搜索与回溯-综合练习: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;
        //     }
        // }
    }
}
相关推荐
一 乐10 小时前
自习室座位预约管理系统|基于springboot + vue自习室座位预约管理系统(源码+数据库+文档)
java·vue.js·spring boot
圣保罗的大教堂10 小时前
leetcode 1401. 圆和矩形是否有重叠 中等
leetcode
qq_4101942910 小时前
.NET 8.0 下基于 PaddleOCRSharp 的离线文字识别落地指南
算法·.net
此时不提桶,更待何时10 小时前
02-02-B-AQS与JUC锁面试与生产事故实战
java
音符犹如代码10 小时前
Kafka 接入 AI 的三条路线:MCP 提案、会话记忆与实时上下文
java·大数据·ai·kafka
Omics Pro10 小时前
1个月2轮融资!长寿虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
residual_fan10 小时前
航空发动机故障诊断专用智能体(六):实际机队健康管理中的应用考量与展望
人工智能·算法·数据挖掘·数据分析
vx_BS8133010 小时前
【项目编号:project51629】Spring Boot 乡村自来水缴费系统:把抄表、水费生成与在线缴费做成一条数字化闭环
java·spring boot·eclipse·tomcat·maven
qq_2695067510 小时前
第29课-Servlet基础
java
hansang_IR10 小时前
【讲解】CSP-S2026 第一轮初赛
c++·算法