526. 优美的排列

2021-08-26  本文已影响0人  漫行者_

526. 优美的排列

这题目看见求数量,就习以为常的觉得是一个动态规划的题目,结果看题解是一个回溯的题目。
该题有点类似于求全排列数量或者所有情况的题目。主要特点就是:

方法一:DFS + 爆搜

class Solution {
    public int countArrangement(int n) {
        return getCount(n, 1, new boolean[n+1]);
    }

    public int getCount(int n, int i, boolean[] used) {
        if (i > n) {
            return 1;
        }
        int count = 0;
        for(int j = 1; j<=n; j++) {
            if(!used[j] && (j%i==0 || i%j==0)) {
                used[j] = true;
                count += getCount(n, i+1, used);
                used[j] = false;
            }
        }
        return count;
    }
}
上一篇下一篇

猜你喜欢

热点阅读