ホームページ >バックエンド開発 >C++ >C++ で書かれており、与えられた合計を持つ行列内の数値のペアを見つけます。

C++ で書かれており、与えられた合計を持つ行列内の数値のペアを見つけます。

WBOY
WBOY転載
2023-09-09 18:05:021398ブラウズ

C++ で書かれており、与えられた合計を持つ行列内の数値のペアを見つけます。

この記事では、指定された行列内で指定された合計を持つペアを見つけるプログラムについて説明します。例: -

Input : matrix[n][m] = { 
   { 4, 6, 4, 65 }, 
   { 56, 1, 12, 32 },
   { 4, 5, 6, 44 },
   { 13, 9, 11, 25 } 
}, SUM = 20

Output : Pair exists.
Explanation : Sum = 20 is equal to the sum of numbers 9 and 11 which exists in the matrix.

Input : matrix[n][m] = { 
   { 5, 7, 3, 45 },  
   { 63, 5, 3, 7 },  
   { 11, 6, 9, 5 },
   { 8, 6, 14, 15 } 
}, SUM = 13
Output : Pair does not exist.
Explanation : No pair exists in the matrix whose sum is equal to 7.

解決策を見つける方法

ここで、上記の問題の解決策を見つけるための 2 つの異なる方法について説明します。

ブルート フォース メソッド

指定された行列内の各ペアを検討し、ペアの合計が指定された SUM に等しいかどうかを確認し、等しい場合は「ペアが一致していません」と出力します。そうでない場合は、 「ペアリングが存在しません」と出力されます。この方法を適用するのは非常に簡単ですが、時間計算量が O((N*M)2) に増加します。

効率的な方法

このプログラムは、ハッシュを使用してすべての行列要素を保存し、行列を走査して [SUM & (インデックス要素)] の差が等しいかどうかを確認します。その場合は、「Exist」と出力してプログラムを終了します。 NO の場合、印刷を通過した後は「存在しません」。

#include <bits/stdc++.h>
using namespace std;

#define n 4
#define m 4

int main() {
   int matrix[n][m] = { 
      { 5,7, 3,45 },
      { 63, 5, 3, 7 },
      { 11, 6, 9, 5 },
      { 8, 6, 14, 15 } 
   };

   int sum = 7;
   unordered_set<int> hash;

   for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
         if (hash.find(sum - matrix[i][j]) != hash.end()) {
            cout << "Pair exists." << endl;
            return 0;
         } else {
            hash.insert(matrix[i][j]);
         }
      }
   }

   cout << "Pair does not exist." << endl;
   return 0;
}

出力

Pair does not exist.

上記のコードの説明

  • 2次元配列を宣言し、その中に要素を格納します。
  • 配列をトラバースして、(sum - Matrix[i][j]) != hash.end() であるかどうかを確認します。
  • 条件が満たされる場合、「ペアに次の内容が含まれる」と出力し、メイン関数から戻ります。
  • それ以外の場合は、配列の走査を続け、最後に「ペアは通知します。」を出力します。

結論

この記事では、行列内の指定された合計を持つペアまたは 2D 配列を見つけることについて説明し、この問題を解決する強引な方法と効率的な方法の両方について説明しました。この問題を解決するための C プログラムについて話し合いました。ただし、このプログラムは C、Java、Python などの他の言語でも作成できます。この記事がお役に立てば幸いです。

以上がC++ で書かれており、与えられた合計を持つ行列内の数値のペアを見つけます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。