Rezolvare completă PbInfo #778 MChenar

Cerinţa

Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine mulțimea formată din elementele distincte ale chenarului matricei.

Date de intrare

Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.

Date de ieşire

Programul afișează pe ecran elementele mulțimii determinate, în ordine strict crescătoare, separate printr-un spațiu.

Restricţii şi precizări

  • 1 ≤ m,n ≤ 100
  • elementele matricei vor fi mai mici decât 1.000.000
  • chenarul matricei este format din elementele situate pe prima linie, prima coloană, ultima linie, ultima coloană

Exemplu

Date de intrare

4 7
15 27 40 41 32 42 12 
48 35 40 54 17 46 33 
37 52 40 19 11 46 23 
49 27 40 29 25 44 12 

Date de ieșire

12 15 23 25 27 29 32 33 37 40 41 42 44 48 49

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema MChenar:

#include <iostream>
using namespace std;

int n,m,a[101][101] , v[500] , k;

int main()
{
    cin >> n >> m;
    for(int i = 1 ; i <= n ; ++i)
        for(int j = 1 ; j <= m ; ++j)
            cin >> a[i][j];
    
    k = 0;
    
    for(int i = 1 ; i <= n ; i ++ )
        for(int j =1 ; j <=m ; j ++)
            if(i == 1 || i == n || j == 1 || j == m)
            {
                bool gasit = false;
                for(int p = 1 ; p <= k && ! gasit ; p ++)
                    if(a[i][j] == v[p])
                        gasit = true;
                if(! gasit)
                {
                    int p = k + 1;
                    for(p = k + 1 ; p > 1 && v[p-1] > a[i][j] ; p --)
                        v[p] = v[p-1];
                    v[p] = a[i][j];
                    k ++;
                }
            }
    for(int i = 1; i <= k ; i ++)
        cout << v[i] << " ";
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #778 MChenar

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #778 MChenar de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!