递归、搜索与回溯-综合练习: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;
        //     }
        // }
    }
}
相关推荐
清心歌2 小时前
记一次系统环境变量更改后在IDEA中无法读取新值的排查过程
java·后端·intellij-idea·idea
大尚来也2 小时前
驾驭并发:.NET多线程编程的挑战与破局之道
java·前端·算法
dong__csdn2 小时前
jdk添加信任证书
java·开发语言
向阳而生,一路生花2 小时前
深入浅出 JDK7 HashMap 源码分析
算法·哈希算法
hhcccchh2 小时前
1.1 HTML 语义化标签(header、nav、main、section、footer 等)
java·前端·html
随风,奔跑2 小时前
Spring Security
java·后端·spring
君义_noip2 小时前
信息学奥赛一本通 4150:【GESP2509七级】⾦币收集 | 洛谷 P14078 [GESP202509 七级] 金币收集
c++·算法·gesp·信息学奥赛·csp-s
摸个小yu2 小时前
【力扣LeetCode热题h100】链表、二叉树
算法·leetcode·链表
汀、人工智能3 小时前
[特殊字符] 第93课:太平洋大西洋水流问题
数据结构·算法·数据库架构·图论·bfs·太平洋大西洋水流问题
yaaakaaang3 小时前
十二、代理模式
java·代理模式