八皇后问题

这是一个使用C++实现的八皇后问题解决方案。通过递归方法,在8x8的棋盘上放置皇后,确保每行、每列及对角线上没有其他皇后。代码中定义了isValid函数检查当前位置是否可以放置皇后,然后使用placeQueen函数递归地尝试放置皇后。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<math.h>
using namespace std; 
using std::cout; 
const int size=8;
int abs(int x)
{
  return (x>0?x:-x);
}
bool isValid(int *data,int row,int col)
{
	for(int i=0;i!=row;i++)
	{
		if(data[i]==col||(abs(row-i)==abs(col-data[i])))
                {
                	 return false;	 
                }    
	}
	return true;
}
void placeQueen(int row,int *data)
{
    if(row==size)
  	  {  cout<<"solution:";
  	  	  for(int i=0;i!=size;i++)
			  {
			  	cout<<"  "<<i<<" "<<data[i]<<"  "; 
			  } 
		   cout<<endl;
		
  	  }
else
{

    for(int col=0;col!=size;col++)
      {
      	if(isValid(data,row,col))//0~(row-1)的皇后已经放好了 
          {
          	data[row]=col;
          	placeQueen(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值