ホームページ  >  記事  >  バックエンド開発  >  。グリッド内の魔方陣

。グリッド内の魔方陣

王林
王林オリジナル
2024-08-10 06:44:32379ブラウズ

840。グリッド内の魔方陣

トピック: 配列、ハッシュ テーブル、数学、行列

3 x 3 魔方陣 は、各行、列、および両方の対角線が一致するように、 1 から 9 までの個別の数字で満たされた 3 x 3 のグリッドです。すべて同じ合計になります。

整数の行 x 列グリッドがある場合、3 x 3 の連続する魔方陣サブグリッドはいくつありますか?

注: 魔方陣には 1 ~ 9 の数字のみを含めることができますが、グリッドには最大 15 の数字を含めることができます。

例 1:

. Magic Squares In 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

指定されたグリッド内にある魔方陣は合計で 1 つだけです。

例 2:

  • 入力: グリッド = [[8]]
  • 出力: 0

制約:

  • 行 == グリッド.長さ.
  • col == グリッド[i].length
  • 1
  • 0

解決策:

指定されたグリッド内で魔方陣を形成する 3x3 の連続したサブグリッドの数をカウントする必要があります。魔方陣は、すべての行、列、および両方の対角線の合計が同じ値になる 3x3 のグリッドで、1 から 9 までの個別の数字が含まれます。

この問題を解決するには、次の手順に従います:

  1. サブグリッドが Magic かどうかを確認します:

    • サブグリッドには、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. numMagicSquaresInside 関数:

    • 指定されたグリッド内のすべての可能な 3x3 サブグリッドを反復処理します。
    • それらのサブグリッドのうち魔方陣であるものがいくつあるかを数えます。

このコードは制約内で効率的に動作し、指定されたグリッド内のすべての 3x3 魔方陣サブグリッドをカウントします。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が。グリッド内の魔方陣の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。