php 遞迴函式 解決 皇后問題 速度有點慢

2021-06-21 09:18:43 字數 684 閱讀 1952

<?php

//遞迴演算法解決 皇后問題

//皇后問題 在乙個n*n的矩陣中,放置n個皇后 ,要求每個皇后不同行,不同列,不在對角線上

//遞迴解決

//place(k,n)表示要在k列放置乙個皇后,那麼就有k-1個皇后已經放好了

//place(k+1,n)則表示k個皇后已近放好了,規模小於plack(k,n)

//遞迴模型

//place(i,n) i>n;輸出

//place(k,n) 在k列上尋找正確的行來放置

//place(k+1,n) 其他

$n=10; //初始化有你n個皇后

$pos = array(); //儲存放置的位置

$count = 0;

//輸出結果

function print_res($pos,&$count)

echo '';}

//查詢當前位置是否合法

function find($row,$col,$pos)

$k++;

} return true;

}//遞迴演算法

function place($k,$n,&$pos,&$count)

} }}

place(1,$n, $pos,$count);

?>

遞迴法解決N皇后問題

n皇后問題 在乙個n n的棋盤上面放置n個皇后,要使得任意兩個皇后之間不能相互攻擊,規則是任意兩個皇后處在同一行,同一列或者同一斜線的位置上時,能夠相互攻擊,皇后可以走任意步。通過分析題目可以知道,若使任意兩個皇后都不能互相攻擊,那麼就必須使得任意兩個皇后不能處在同一行,同一列,同一斜線即可 隱藏條...

遞迴解決經典八皇后問題

public class recursiontest 列印問題 public static void test int n else 階乘問題 public static intfactorial int n else 迷宮問題 迷宮問題,求初始點到終點的一條通路 不一定是最小通路!牆體設為1,路徑...

遞迴演算法解決八皇后問題

在 8 8 格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76 種方案。1854 年在柏林的象棋雜誌上不同的作者發表了 40 種不同的解,後來有人用圖論的方法解出 92 種結果。這個問題也一共有92種解法 思路分析 第乙個...