• N皇后问题


    TestNQueen.cpp

     

    #include <iostream>

    #include "Queen.h"

    using namespace std;

     

    int main()

    {

        cout << "输入皇后个数";

        int n;

        cin >> n;

        int* M = new int[n];

        int* L = new int[2 * n];

        int* R = new int[2 * n];

        int** A = new int*[n];

        for(int i = 0; i < n; ++i)

        {

            A[i] = new int[n];

            for(int j = 0; j < n; ++j)

            {

                A[i][j] = 0;

            }

     

            M[i] = 0;

        }

        for(int i = 0; i < 2 * n; ++i)

        {

            L[i] = 0;

            R[i] = 0;

        }

     

        int p = mytry(0, M, L, R, A, n);

        cout << "共有" << p << "种方案" << endl;

        system("pause");

        return 0;

    }

     

    Queen.h

     

    #include <iostream>

    using namespace std;

     

    int qCount = 0;

     

    void print(int** A, int n)

    {

        for(int i = 0; i < n; ++i)

        {

            for(int j = 0; j < n; ++j)

            {

                cout << A[i][j] << "  ";

            }

            cout << endl;

        }

        cout << "------------------------------" << endl;

    }

     

    int mytry(int i, int* M, int* L, int* R, int** A, int n)

    {

        for(int j = 0; j < n; ++j)

        {

            if (!M[j] && !L[i + j] && !R[i - j + n])

            {

                A[i][j] = i + 1;

                M[j] = L[i + j] = R[i - j + n] = 1;

     

                if (i == n - 1)

                {

                    print(A, n);

                    ++qCount;

                }

     

                else

                {

                    mytry(i + 1, M, L, R, A, n);

                }

     

                 A[i][j] = 0;

                 M[j] = L[i + j] = R[i - j + n] = 0;

             }

        }

        return qCount;

    }

  • 相关阅读:
    MOSS的CSS样式说明
    RSS 简介(一)
    母版页详细分析
    导出 WINDOWS\assembly中DLL文件
    文件下载代码
    列表Field属性的巧妙运用(隐藏栏)
    javascript弹出窗口总结
    转[VBA起步]常用的、带解释的 VBA 短句
    如何生成自定义列表
    mysql 连接字符串与SQL不同
  • 原文地址:https://www.cnblogs.com/720139h/p/3474617.html
Copyright © 2020-2023  润新知