首頁  >  文章  >  後端開發  >  。網格中的魔術方塊

。網格中的魔術方塊

王林
王林原創
2024-08-10 06:44:32355瀏覽

840。網格中的魔術方塊

主題:陣列、雜湊表、數學、矩陣

3 x 3 幻方 是一個3 x 3 的網格,其中填充了不同的數字 1 9,使得每行、列和兩條對角線都有相同的總和。

給定 row x col 整數網格,有多少 3 x 3 連續幻方子網格?

注意:幻方只能包含 1 到 9 的數字,而網格最多可以包含 15 個數字。

範例1:

. Magic Squares In Grid

  • 輸入: grid = [[4,3,8,4],[9,5,1,9],[2,7,6,2]]
  • 輸出: 1
  • 說明: 下面的子網格是 3 x 3 幻方:

. Magic Squares In Grid

雖然這不是:

. Magic Squares In Grid

給定網格內總共只有一個幻方。

範例2:

  • 輸入: grid = [[8]]
  • 輸出: 0

約束:

  • row == grid.length.
  • col == grid[i].length
  • 1
  • 0

解:

我們需要計算給定網格中有多少個 3x3 連續子網格形成幻方。幻方是一個 3x3 的網格,其中所有行、列和兩條對角線的總和均為相同值,並且包含從 1 到 9 的不同數字。

要解決這個問題,我們可以按照以下步驟操作:

  1. 檢查子網格是否神奇:

    • 子網格必須包含從 1 到 9 的所有不同數字。
    • 每行、列、對角線的總和應為 15。
  2. 遍歷網格:

    • 由於我們需要檢查 3x3 子網格,因此我們將從 0 到 row-2 迭代行,從 0 迭代到 col-2 列。
    • 對於 3x3 子網格的每個左上角,提取子網格並檢查它是否是幻方。

讓我們用 PHP 實作這個解決方案:840。網格中的魔術方塊

<?php
// Example usage:
$grid1 = [
    [4, 3, 8, 4],
    [9, 5, 1, 9],
    [2, 7, 6, 2]
];

echo numMagicSquaresInside($grid1); // Output: 1

$grid2 = [
    [18]
];

echo numMagicSquaresInside($grid2); // Output: 0
?>

解釋:

  1. isMagic 函數:

    • 擷取 3x3 子網格。
    • 檢查所有數字是否不同且在 1 到 9 之間。
    • 驗證行、列和對角線的總和均為 15。
  2. numMagicSquares內部函數:

    • 迭代給定網格中所有可能的 3x3 子網格。
    • 計算這些子網格中有多少個是幻方。

此程式碼在約束範圍內有效運作,計算給定網格中的所有 3x3 幻方子網格。

聯絡連結

如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

  • 領英
  • GitHub

以上是。網格中的魔術方塊的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn