八皇后问题-eight_queen

代码如下:

#include <iostream>
//using namespace std;

#define QUEEN_NUM 8
int ResultCounter = 0;

void QueenSolution(int *colume, int col);
bool check(int *colume, int col);

int main(void){
    //数组colume中存放的是行值
    //即假设col[0]==3,表明第1列中皇后在第4行上
    int colume[QUEEN_NUM] = {0};
    QueenSolution(colume, 0);
    std::cout << "Solution Total Count: " << ResultCounter << std::endl;
}

void QueenSolution(int *colume, int col){
	if(col == QUEEN_NUM){
		ResultCounter++;
		return;
	}
	for(int i = 0; i < QUEEN_NUM; i++){
		colume[col] = i;
		if(check(colume, col))
			QueenSolution(colume, col + 1);
	}
}

bool check(int *colume, int col){
	for(int i = 0; i < col; i++){
		if(colume[i] == colume[col] || colume[i] + i == colume[col] + col || colume[i] - i == colume[col] - col )
			return false;
	}
	return true;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值