Gigel a găsit o matrice cu n linii și m coloane și elemente numere naturale. El își propune să determine, pentru fiecare linie, cea mai mică valoare care se poate obține adunând elementele de pe linie, cu excepția unuia.
Pentru a rezolva această problemă, putem folosi o abordare iterativă. În fiecare linie a matricei, putem calcula suma tuturor elementelor și apoi compara această sumă cu suma tuturor elementelor, cu excepția celui mai mare și celui mai mic element. Cea mai mică valoare care se poate obține adunând elementele de pe linie, cu excepția unuia, va fi suma tuturor elementelor, cu excepția celui mai mare și celui mai mic element. Aici este un exemplu de cod C++ care rezolvă problema: ```cpp #include <iostream> #include <vector> #include <algorithm> // Structură pentru matrice struct Matrice { std::vector<std::vector<int>> linii; }; // Funcție pentru a găsi cea mai mică valoare care se poate obține adunând elementele de pe linie, cu excepția unuia int gasesteCeaMaiMicaValoare(Matrice matrice, int linie) { int sumaTuturorElementelor = 0; for (int i = 0; i < matrice.linii[linie].size(); i++) { sumaTuturorElementelor += matrice.linii[linie][i]; } int sumaCuExceptiaCeluiMaiMareSiCeluiMaiMic = 0; int celMaiMare = *std::max_element(matrice.linii[linie].begin(), matrice.linii[linie].end()); int celMaiMic = *std::min_element(matrice.linii[linie].begin(), matrice.linii[linie].end()); for (int i = 0; i < matrice.linii[linie].size(); i++) { if (matrice.linii[linie][i] != celMaiMare && matrice.linii[linie][i] != celMaiMic) { sumaCuExceptiaCeluiMaiMareSiCeluiMaiMic += matrice.linii[linie][i]; } } return sumaTuturorElementelor - std::max(sumaTuturorElementelor, sumaCuExceptiaCeluiMaiMareSiCeluiMaiMic); } int main() { Matrice matrice; int n, m; // Citirea dimensiunilor matricei std::cout << "Introduceti numarul de linii (n): "; std::cin >> n; std::cout << "Introduceti numarul de coloane (m): "; std::cin >> m; // Citirea elementelor matricei for (int i = 0; i < n; i++) { matrice.linii.push_back(std::vector<int>(m)); for (int j = 0; j < m; j++) { std::cout << "Introduceti elementul [" << i << "][" << j << "]: "; std::cin >> matrice.linii[i][j]; } } // Afisarea celor mai mici valori care se pot obține adunând elementele de pe linie, cu excepția unuia for (int i = 0; i < n; i++) { std::cout << "Cea mai mica valoare care se poate obtine adunand elementele de pe linia " << i + 1 << ", cu exceptia unuia, este: " << gasesteCeaMaiMicaValoare(matrice, i) << std::endl; } return 0; } ``` Acest cod citeste dimensiunile matricei și elementele sale, apoi afisează cea mai mică valoare care se poate obține adunând elementele de pe fiecare linie, cu excepția unuia.