LeetCode 52. N-Queens II
上一题用了递归,这次用栈
```
class Solution {
public:
int ans=0;
int a[100][100];
int m;
int x[100005];
int y[100005];
int s[100005];
int p[100005];
int totalNQueens(int n) {
m=n;
memset(a,0,sizeof(a));
int pos=0;
s[pos]=0;
x[pos]=-1;
y[pos]=-1;
p[pos]=-1;
pos++;
while(pos!=0)
{
int i=s[pos-1];
if(i==n)
{
ans++;
}
if(p[pos-1]<=n-1&&i!=n)
{
p[pos-1]++;
while(a[i][p[pos-1]]!=0)
{
p[pos-1]++;
}
if(p[pos-1]!=n){
a[i][p[pos-1]]=1;
setLock(i,p[pos-1],2);
s[pos]=i+1;
x[pos]=i;
y[pos]=p[pos-1];
p[pos]=-1;
pos++;
continue;
}
}
if(pos==1)
break;
a[x[pos-1]][y[pos-1]]=0;
setLock(x[pos-1],y[pos-1],-2);
pos--;
}
return ans;
}
void setLock(int x,int y,int num)
{
for(int i=x+1;i<m;i++)
{
a[i][y]+=num;
}
int tag=1;
for(int i=x+1;i<m;i++)
{
if(y+tag<m)
a[i][y+tag]+=num;
if(y-tag>=0)
a[i][y-tag]+=num;
tag++;
}
}
};
```
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· Tinyfox 发生重大改版
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5
· 近期最值得关注的AI技术报告与Agent综述!