O valoare filtrează două șiruri dacă există doi termeni care au acea valoare, unul fiind în primul șir, iar celălalt în al doilea șir.
Scrieți un program C/C++ care citește de la tastatură numere naturale din intervalul [2,20]: m, n și elementele unui tablou bidimensional cu m linii și n coloane, cu proprietatea că nu există două elemente egale situate pe aceeași linie sau pe aceeași coloană.
Programul afișează pe ecran valorile care pot filtra șirul format din primele n-1 elemente de pe prima linie, respectiv șirul format din ultimele m-1 elemente ale ultimei coloane a tabloului, ca în exemplu. Valorile sunt afișate într-o ordine oarecare, separate prin câte un spațiu, sau mesajul nu exista, dacă nu există astfel de valori.
Exemplu: pentru m=5, n=4 și tabloul alăturat, se afișează pe ecran, nu neapărat în
această ordine, numerele 4 7
4 5 7 2
2 7 3 6
7 6 4 0
6 9 8 7
8 0 5 4
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
// Citim matricea.
int matrix[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
// Cream un set care să conțină elementele primei linii.
unordered_set<int> first_row;
for (int i = 0; i < n - 1; i++) {
first_row.insert(matrix[0][i]);
}
// Cream un set care să conțină elementele ultimei coloane.
unordered_set<int> last_column;
for (int i = 0; i < m - 1; i++) {
last_column.insert(matrix[i][n - 1]);
}
// Intersectăm cele două seturi.
unordered_set<int> intersect;
for (auto& x : first_row) {
if (last_column.count(x) > 0) {
intersect.insert(x);
}
}
// Dacă intersect nu conține elemente, nu există valori care pot filtra cele
// două șiruri.
if (intersect.empty()) {
cout << "nu exista";
} else {
// Afișăm elementele intersect.
for (auto& x : intersect) {
cout << x << " ";
}
}
return 0;
}
Pentru a compile și a rula programul, puteți utiliza comanda g++ (dacă aveți GCC instalat):
Copy code
g++ program.cpp -o program
./program
Sper că acest răspuns vă este de ajutor. Dacă aveți întrebări sau doriți clarificări, nu ezitați să mă întrebați.