leetcode随机一题526
数据范围n<=15,最大是15!,回溯法可以做,从左到右直接枚举1-n中的某个数能不能放在这里。
class Solution {
public:
int ans=0;
int countArrangement(int n) {
vector<bool>vis(20);
backtrack(vis, n, 1);
return ans;
}
void backtrack(vector<bool>&vis,int n,int pos)
{
if(pos==n+1)
{
ans++;
return;
}
for(int i=1;i<=n;i++)
{
if(!vis[i]&&((i%pos==0)||(pos%i==0)))
{
vis[i]=true;
backtrack(vis, n, pos+1);
vis[i]=false;
}
}
}
};