原题目:https://leetcode-cn.com/problems/beautiful-arrangement/
代码:
class Solution {
vector<bool> m;
int count=0;
//index是当前要填充的位置
void dfs(int index,int& N){
if(index> N){
count += 1;return;
}
for(int i=1;i<=N;i++){
if(m[i] ==0 && (index%i==0 || i%index==0)){
m[i]=1;;
dfs(index+1,N);
m[i]=0;
}
}
}
public:
int countArrangement(int N) {
m.resize(N+1);
dfs(1,N);
return count;
}
};