首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

PHP 實現九宮格(魔方陣)驗證:雙層迴圈檢查行、列、對角線和

     編輯:程式設計疑難解答

題目

3×3 九宮格填入 1~9 不重複數字,要求每行、每列、兩條對角線和相等(標準魔方陣和為 15)。不允許 9 層巢狀迴圈暴力搜尋。

驗證邏輯(偽代碼)


function isMagicSquare(arr[3][3]):
    target = arr[0][0] + arr[0][1] + arr[0][2]  // 第一行和作為基準

    // 檢查行
    for i = 1 to 2:
        sum = 0
        for j = 0 to 2: sum += arr[i][j]
        if sum != target: return false

    // 檢查列
    for j = 0 to 2:
        sum = 0
        for i = 0 to 2: sum += arr[i][j]
        if sum != target: return false

    // 主對角線
    sum = 0
    for i = 0 to 2: sum += arr[i][i]
    if sum != target: return false

    // 副對角線
    sum = 0
    for i = 0 to 2: sum += arr[i][2-i]
    if sum != target: return false

    return true

PHP 實作


function isMagicSquare(array $arr): bool {
    $target = array_sum($arr[0]);
    // 行
    for ($i = 1; $i < 3; $i++) {
        if (array_sum($arr[$i]) !== $target) return false;
    }
    // 列
    for ($j = 0; $j < 3; $j++) {
        $sum = $arr[0][$j] + $arr[1][$j] + $arr[2][$j];
        if ($sum !== $target) return false;
    }
    // 對角線
    if (($arr[0][0] + $arr[1][1] + $arr[2][2]) !== $target) return false;
    if (($arr[0][2] + $arr[1][1] + $arr[2][0]) !== $target) return false;
    return true;
}

生成魔方陣(希臘式構造法)

若需生成而非驗證,3×3 魔方陣本質唯一(旋轉/鏡像除外),可直接硬編碼或用 Siamese 方法:


$magic = [
    [8, 1, 6],
    [3, 5, 7],
    [4, 9, 2]
];

結語

九宮格魔方陣驗證只需雙層迴圈檢查 8 條線(3 行 + 3 列 + 2 對角線),時間複雜度 O(1),完全滿足「無 9 層迴圈」要求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved