八皇后问题—C语言

#include <stdio.h>
#include <stdlib.h>

#define TRUE 1
#define FALSE 0

int board[8][8];

void print_board(){
int row;
int column;

static int n_solutions;

n_solutions+=1;

printf("Solution #%d: \n",n_solutions);

for (row=0;row<8;row++)
{
for (column=0;column<8;column++)
{
if (board[row][column])
printf("%3c",'Q');
else
printf("%3c",'+');
}
putchar('\n');
}
putchar('\n');
}

int conficts(int row,int column){
int i;

for (i=1;i<8;i++)
{
/************************************************************************/
/* Check up,left,right don't have to check down! */
/************************************************************************/
if(row-i>=0&&board[row-i][column])
return TRUE;
if(column-i>=0&&board[row][column-i])
return TRUE;
if(column+i<8&&board[row][column+i])
return TRUE;
/************************************************************************/
/* Check the diagonals:up and left,up and right */
/************************************************************************/
if(row-i>=0&&column-i>=0&&board[row-i][column-i])
return TRUE;
if(row-i>=0&&column+i<8&&board[row-i][column+i])
return TRUE;
}

return FALSE;
}

void place_queen(int row){
int column;

for (column=0;column<8;column++)
{
board[row][column]=TRUE;

if (row==0||!conficts(row,column))
{
if (row<7)
place_queen(row+1);
else
print_board();
}
board[row][column]=FALSE;
}
}

int main(){
place_queen(0);
return EXIT_SUCCESS;
}

转载于:https://www.cnblogs.com/qinjunni/archive/2012/03/01/2376343.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值