N皇后

来源:互联网 发布:战舰世界更新数据出错 编辑:程序博客网 时间:2024/05/22 00:46


#include "OJ.h"
#include "math.h"


/*
功能: 求解放置8皇后方案的个数。
输入:
    无
返回:
    int:放置8皇后方案的个数
*/
int N_f=0;
int Q[100];
 bool IsSafe(int row, int col)
{
    for (int i = 0; i < row; i++)
    {
        if (Q[i] == col)
            return false;
        if (abs(Q[i] - col) == row - i)
            return false;


    }
    return true;
}
 bool GetSafePos(int row, int& Qi)
{
    for (int i = 0; i <row;i++ )
        if (Q[i] == -1)
        {  GetSafePos(row - 1,Q[row - 1]); }
    while (true)
    {
        for (int i = Qi + 1; i < N_f; i++)
        {
            if (IsSafe(row, i))
            {
                Qi = i;
                return true;
            }
        }
        Qi = -1;
        if (Q[0] == -1)
            return false;
        if (!GetSafePos(row - 1, Q[row - 1]))
            break;
    }
    return false;
    
    
}


int PlaceQueenMethodNum(int N)
{
    /*在这里实现功能*/
int Count_Q=0;
N_f=N;
  for (int i = 0; i < N; i++)
    Q[i] = -1;
while (GetSafePos(N - 1,  Q[N - 1]))
{
//  if (!HasSolution()) return;
Count_Q++;
          
}
    return Count_Q;
}

0 0
原创粉丝点击