思路
- 全排列基础上多加一个条件
- 返回答案长度,只需要申请一个变量计数,并动态记录path的长度
代码
class Solution {
int count = 0;
void backtracing(int n, vector<int>& used,int path_len) {
if (path_len == n) {
count++;
return;
}
for (int i = 1; i <= n; ++i) {
//全排列基础上多加一个条件
if ((path_len + 1) % i && i%(path_len+1))
continue;
if (used[i] == 0) {
used[i] = 1;
backtracing(n, used,path_len+1);
used[i] = 0;
}
}
}
public:
int countArrangement(int n) {
vector<int> used(n+1);
backtracing(n, used,0);
return count;
}
};