5
Algorithm NQueens ( k, n) //Prints all Solution to the n-queens problem
{
    for i := 1 to n do
    {
        if Place (k, i) then
        {
            x[k] := i;
            if ( k = n) then write ( x [1 : n]
            else NQueens ( k+1, n);
        }
    }
}

Algorithm Place (k, i)
{
    for j := 1 to k-1 do
        if (( x[ j ] = // in the same column
           or (Abs( x [ j ] - i) =Abs ( j – k ))) // or in the same diagonal
        then return false;
        return true;
}

上記のコードは、バックトラッキングを使用して N クイーンの問題を解決するためのものです。2 つの行の最初の 2 つのクイーンをそれぞれの列に配置できると思います。3 番目の行のクイーンになると、クイーンが攻撃する必要がないため配置できません。アルゴリズム N のクイーンから単純に終了します...では、このアルゴリズムはどのようにバックトラッキングを実装しているのでしょうか?

4

5 に答える 5