当前位置: 代码迷 >> C语言 >> 皇后问题,怎么用栈实现
  详细解决方案

皇后问题,怎么用栈实现

热度:378   发布时间:2008-04-27 21:52:51.0
皇后问题,怎么用栈实现
这个程序有什么问题,高手帮忙改一下啊
#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);
}
搜索更多相关的解决方案: 皇后  

----------------解决方案--------------------------------------------------------
  相关解决方案