>  기사  >  백엔드 개발  >  C++로 작성되었으며 주어진 합을 사용하여 행렬에서 숫자 쌍을 찾습니다.

C++로 작성되었으며 주어진 합을 사용하여 행렬에서 숫자 쌍을 찾습니다.

WBOY
WBOY앞으로
2023-09-09 18:05:021359검색

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.

Ways to Find Solution

이제 위 문제에 대한 해결책을 찾는 두 가지 방법을 설명하겠습니다.

무차별 대입 방법

주어진 행렬의 각 쌍을 고려하여 쌍의 합이 주어진 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;
}

Output

Pair does not exist.

위의 코드 설명

  • 2차원 배열을 선언하고 그 안에 요소를 저장합니다.
  • 배열을 탐색하여 if (sum - Matrix[i][j]) != hash.end()를 찾습니다.
  • 조건이 충족되면 "Pair Contains"를 인쇄하고 주 함수에서 돌아갑니다.
  • 그렇지 않으면 배열을 계속 탐색하고 마지막으로 "Pair does notify."를 인쇄합니다.

결론

이 기사에서는 행렬에서 주어진 합을 사용하여 쌍 또는 2D 배열을 찾는 방법에 대해 논의했으며 이 문제를 해결하는 무차별 대입 방법과 효율적인 방법에 대해 논의했습니다. 우리는 이 문제를 해결하기 위해 C++ 프로그램을 논의했습니다. 그러나 C, Java, Python 등과 같은 다른 언어로 이 프로그램을 작성할 수 있습니다. 이 기사가 도움이 되었기를 바랍니다.

위 내용은 C++로 작성되었으며 주어진 합을 사용하여 행렬에서 숫자 쌍을 찾습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제