queen.cpp
来自「解决有名的皇后问题」· C++ 代码 · 共 89 行
CPP
89 行
#include <math.h>
#include <stdio.h>
int record[8];
int n=8,top=0,count=0;
void push(int column)
{
record[top]=column;
top++;
}
void pop()
{
top--;
record[top]=0;
}
int fixed(int line,int column)
{
int buf_line;
for(buf_line=0;buf_line<top;buf_line++)
{
if(abs(record[buf_line]-column)==abs(buf_line-line))
break;
}
if(buf_line==top)
{
for(buf_line=0;buf_line<top;buf_line++)
{
if(record[buf_line]==column)
break;
}
if(buf_line==top)
return 1;
else
return 0;
}
else
return 0;
}
void pbuffer()
{
int buf_line;
for(buf_line=0;buf_line<n;buf_line++)
printf("%d ",record[buf_line]);
printf("\n");
pop();
count++;
}
void go(int line)
{
int column;
if(line<n-1)
{
for(column=0;column<n;column++)
{
if(fixed(line,column))
{
push(column);
go(line+1);
pop();
}
}
}
else
{
for(column=0;column<n;column++)
{
if(fixed(line,column))
{
push(column);
pbuffer();
break;
}
}
}
}
int main()
{
go(0);
if(count==0)
printf("Not found!!\n");
else
printf("%d cases found.\n",count);
return(0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?