首頁 > 後端開發 > php教程 > 如何在 PHP 中使用回溯產生所有字串排列?

如何在 PHP 中使用回溯產生所有字串排列?

DDD
發布: 2024-11-29 07:10:14
原創
626 人瀏覽過

How to Generate All String Permutations Using Backtracking in PHP?

使用回溯方法的字串排列

排列是指以所有可能的順序重新排列字串的字元。要在 PHP 中產生字串的所有排列,我們可以採用回溯演算法。

假設我們有一個字串「hey」。

  1. 分割字串分成單一字元:

    我們先將字串分割為單一字元陣列。在這種情況下,['h', 'e', 'y'].

  2. 遞歸生成排列:

    使用遞歸,我們透過系統地交換字元並產生所有可能的排列來產生排列

  3. 回溯恢復原始順序:

    產生排列後,我們回溯恢復原始字元順序。這可以防止生成重複排列。

代碼示例:

// Function to generate and print all permutations of $str (N = strlen($str)).
function permute($str, $i, $n) {
    if ($i == $n) {
        print "$str\n";
    } else {
        for ($j = $i; $j < $n; $j++) {
            swap($str, $i, $j);
            permute($str, $i + 1, $n);
            swap($str, $i, $j); // Backtrack.
        }
    }
}

// Function to swap the characters at positions $i and $j of $str.
function swap(&$str, $i, $j) {
    $temp = $str[$i];
    $str[$i] = $str[$j];
    $str[$j] = $temp;
}

$str = "hey";
permute($str, 0, strlen($str)); // Call the function.
登入後複製

輸出:

hey
hye
ehy
eyh
yeh
yhe
登入後複製

這種回溯方法確保所有排列都是系統產生的已列印。

以上是如何在 PHP 中使用回溯產生所有字串排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板