526. Beautiful Arrangement(dfs)
阿新 • • 發佈:2019-02-16
題目:
假設你有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;
}
};