class Solution {
public:
int countArrangement(int N) {
vector<int> test(N+5,0);
for (int i = 1; i <= N; i++)
test[i] = i;
int ans = 0;
vector<vector<int>> ansvec;
vector<vector<int>> avec;
create(test, 1, N, ans);
return ans;
}
void create(vector<int> &test, int cur, int num,int &ans) {
if (cur <= num) {
for (int i = cur; i <= num; i++) {
if ( (cur%test[i]==0) || (test[i]%cur==0) ) {
swap(test[i], test[cur]);
create(test, cur + 1, num, ans);
swap(test[i], test[cur]);
}
}
}
else
ans++;
}
};
每次交换满足条件即可