皇后问题,怎么用栈实现
这个程序有什么问题,高手帮忙改一下啊#include<stdio.h>
#include<stdlib.h>
#define max 20
struct{
int line;//行
int flag;//标志,为1时位置合理
}st[max];
int top=0;
void queue(int n)
{
int i;top++;
st[top-1].line=1;st[top-1].flag=1;
while(top>0&&top<n)
{
while(st[top-1].line<n)
{
for(i=0;i<top-1;i++)
if(st[i].line==st[top-1].line||(abs(top-1-i)==abs(st[top-1].line-st[i].line)))
{st[top-1].flag=0;break;}
else
st[top-1].flag=1;
if(st[top-1].flag==1)break;
else if(st[top-1].flag==0)st[top-1].line++;
}
if(st[top-1].flag==1)
{top++;st[top-1].line=1;}
else if (st[top-1].flag==0)
top--;
}
for(int j=0;j<n;j++)
printf("\t(%d,%d)",st[j].line,j);
}
void main()
{
int m;
scanf("%d",&m);
printf("%d皇后问题",m);
queue(m);
}
搜索更多相关的解决方案:
皇后
----------------解决方案--------------------------------------------------------