n皇后问题(递归)
procedure search(k: integer);
var
i: integer;
begin
if k > n then // 是否前n个皇后都已经放下
inc(count)
else // 还有皇后没放
for i := 1 to n do // 从第1列开始逐列尝试
begin
x[k] := i; // 把第k个皇后放在第i列
if check(k) then // 第k个皇后是否可以放在第i列
search(k + 1); // 可以放,继续处理第k+1个皇后
end;
end;
c语言实现的八皇后,采用的是递归回溯法
int main()
{
short int queen[MAX+1][MAX+1];
memset(queen,0,sizeof(queen));
eightqueen(1,queen);
printf("共有%d种棋盘的摆放方式\n",count);
return 0;
}