程式語言 - LeetCode - C++ - 526. Beautiful Arrangement



題目:


解答:

class Solution {
public:
    int countArrangement(int n) {
        int ans = 0;
        vector<bool> used(n + 1, false);

        auto dfs = [&](this auto&& dfs, int pos) {
            if (pos > n) {
                ans += 1;
                return;
            }

            for (int i = 1; i <= n; ++i) {
                if (used[i]) {
                    continue;
                }

                if (i % pos == 0 || pos % i == 0) {
                    used[i] = true;
                    dfs(pos + 1);
                    used[i] = false;
                }
            }
        };

        dfs(1);
        return ans;
    }
};