虽然我以前做过,但这次重刷发现新的做法,发现好像题解区没有,应该是空间比大多数题解小
核心代码:
for(int i=1;i<=n;i++)
{
bool fl=1;
if(vis[i]) continue;
for(int j=1;j<step;j++)
{
if(a[j]-(step-j)==i||a[j]+(step-j)==i)
{
fl=0;
break;
}
}
if(!fl) continue;
vis[i]=1;
a[step]=i;
dfs(step+1);
vis[i]=0;
a[step]=0;
}
不吸氧#10 625ms