이 기사에서는 주어진 행렬에서 주어진 합과 쌍을 찾는 프로그램에 대해 논의할 것입니다. 예를 들어 -
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.
이제 위 문제에 대한 해결책을 찾는 두 가지 방법을 설명하겠습니다.
주어진 행렬의 각 쌍을 고려하여 쌍의 합이 주어진 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.
이 기사에서는 행렬에서 주어진 합을 사용하여 쌍 또는 2D 배열을 찾는 방법에 대해 논의했으며 이 문제를 해결하는 무차별 대입 방법과 효율적인 방법에 대해 논의했습니다. 우리는 이 문제를 해결하기 위해 C++ 프로그램을 논의했습니다. 그러나 C, Java, Python 등과 같은 다른 언어로 이 프로그램을 작성할 수 있습니다. 이 기사가 도움이 되었기를 바랍니다.
위 내용은 C++로 작성되었으며 주어진 합을 사용하여 행렬에서 숫자 쌍을 찾습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!