fbpx

Problema #1508 – Element_SA – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Să se scrie o funcție C++ care are ca parametri două numere naturale n și m și o matrice A(n , m) avȃnd elemente numere întregi și returnează numărul de elemente „șa” din matrice. Un element A(i,j) din matrice se numește element „șa” dacă este maximul de pe coloana j si minimul de pe linia i sau invers.

Subprogramul se va numi nr_sa va avea trei parametri: a, un tablou bidimensional cu elemente întregi, n, m, reprezentând numărul de linii, respectiv de coloane ale tabloului a.

Restricţii şi precizări

  • 0 < n,m ≤ 100
  • numele subprogramului cerut este nr_sa
  • parametrii sunt, în această ordine: a, n, m
  • indicii de linie și de coloana ai tabloului a încep de la 0 și sunt de tip int;
  • matricea folosită în apelul din funcția main va fi declarată int a[100][100]; și are elementele indexate de la 0.

– elementele sunt indexate de la 0).

Important

Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

int nr_sa(int a[][100], int n, int m){
    int minlin[100], maxlin[100], mincol[100], maxcol[100];
    for(int i = 0; i < n; ++i){
        int mini = 2000000001;
        int maxi = 0;
        for(int j = 0; j < m; ++j){
            if(a[i][j] < mini)
                mini = a[i][j];
            if(a[i][j] > maxi)
                maxi = a[i][j];
        }
        minlin[i] = mini;
        maxlin[i] = maxi;
    }
    for(int j = 0; j < m; ++j){
        int mini = 2000000001;
        int maxi = 0;
        for(int i = 0; i < n; ++i){
            if(a[i][j] < mini)
                mini = a[i][j];
            if(a[i][j] > maxi)
                maxi = a[i][j];
        }
        maxcol[j] = maxi;
        mincol[j] = mini;
    }
    int cnt = 0;
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < m; ++j)
            if((a[i][j] == maxlin[i] && a[i][j] == mincol[j]) ||
               (a[i][j] == minlin[i] && a[i][j] == maxcol[j]))
                cnt++;
    return cnt;
}
Comentarii

S-ar putea sa iti placa