Maison > développement back-end > C++ > Écrit en C++, trouver une paire de nombres dans une matrice avec une somme donnée

Écrit en C++, trouver une paire de nombres dans une matrice avec une somme donnée

WBOY
Libérer: 2023-09-09 18:05:02
avant
1392 Les gens l'ont consulté

É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.
Copier après la connexion

Façons de trouver une solution

Nous allons maintenant expliquer deux manières différentes de trouver la solution au problème ci-dessus.

Méthode de la Force Brute

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).

Méthode efficace

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.

Exemple

#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;
}
Copier après la connexion

Sortie

Pair does not exist.
Copier après la connexion

La description du code ci-dessus

  • Déclarez un tableau bidimensionnel et stockez-y des éléments.
  • Parcourez le tableau pour trouver if (sum - Matrix[i][j]) != hash.end().
  • Si la condition est remplie, imprimez "La paire contient" et revenez de la fonction principale.
  • Sinon, continuez à parcourir le tableau et imprimez enfin "Pair notify.".

Conclusion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal