Maison > Article > développement back-end > Écrit en C++, trouver une paire de nombres dans une matrice avec une somme donnée
Dans cet article, nous discuterons du programme pour trouver des paires avec une somme donnée dans une matrice donnée. Par exemple -
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.
Nous allons maintenant expliquer deux manières différentes de trouver la solution au problème ci-dessus.
Considérez chaque paire dans la matrice donnée, vérifiez si la somme de la paire est égale à la SOMME donnée, si c'est le cas, imprimez "La paire n'est pas" sinon, imprimez "La paire n'est pas". L'application de cette méthode est très simple, mais elle augmente la complexité temporelle à O((N*M)2).
Ce programme peut stocker tous les éléments de la matrice en utilisant le hachage, puis parcourir la matrice et vérifier si les différences de [SOMME & (élément d'index)] sont égales. Si tel est le cas, imprimez « Exist » et quittez le programme. Si c'est NON, "n'existe pas" après avoir traversé l'impression.
#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.
Dans cet article, nous avons discuté de la recherche de paires ou de tableaux 2D avec une somme donnée dans une matrice ; nous avons discuté à la fois de la force brute et des moyens efficaces pour résoudre ce problème. Nous avons discuté d'un programme C++ pour résoudre ce problème. Cependant, nous pouvons écrire ce programme dans n'importe quel autre langage comme C, Java, Python, etc. Nous espérons que cet article vous a été utile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!