1. 程式人生 > >526. Beautiful Arrangement(dfs)

526. Beautiful Arrangement(dfs)

題目:
假設你有1到N的N個整數,我們定義如果這N個整數可以組成陣列後每第 i 位(1 ≤ i ≤ N)都滿足下面兩個要求之一就稱其為漂亮的安排:
第 i 個位置的數字可以被 i 整除。
i 可以被第 i 個位置的數字整除。
現在給出N,你可以組成多少種漂亮的安排?

思路:DFS

class Solution {
public:
    int sum = 0;
    int back[20];
    void dfs(int N,int l){
        if(l>N){
            sum++;
            return ;
        }
        for
(int x=1;x<=N;x++){ int ok = 1; back[l] = x; if(!(back[l]%l == 0 || l%back[l] == 0)) continue; for(int y=1;y<l;y++) if(back[l]==back[y]){ ok = 0; break; } if
(ok) dfs(N,l+1); } } int countArrangement(int N) { dfs(N,1); return sum; } };