Informatică, întrebare adresată de corinaruxandra34, 8 ani în urmă

Va rog mult problema 4183 de pe pbinfo.
Nu ma lasa sa dau copy paste, nu stiu de ce, va rog sa o cautati pe net si daca stiti cum se rezolva sa ma ajutati va rog mult.

Răspunsuri la întrebare

Răspuns de Sergetec
1

Salut!

Ai rezolvarea in C++ mai jos

#include <iostream>

using namespace std;

int main()

{

 int n, m, a[101][101], s = 0;

 cin >> n >> m;

 for (int i = 1; i <= n; ++i)

 {

   for (int j = 1; j <= m; ++j)

   {

     cin >> a[i][j];

   }

 }

 for (int i = 1; i <= n; ++i)

 {

   for (int j = 1; j <= m; ++j)

   {

     int mini = 11;

     if (a[i+1][j] < mini && i+1 <= n)

     {

       mini = a[i+1][j];

     }

     if (a[i][j+1] < mini && j+1 <= m)

     {

       mini = a[i][j+1];

     }

     if (a[i-1][j] < mini && i-1 >= 1)

     {

       mini = a[i-1][j];

     }

     if (a[i][j-1] < mini && j-1 >= 1)

     {

       mini = a[i][j-1];

     }

     if (mini > a[i][j])

     {

       s += mini - a[i][j];

       a[i][j] = mini;

     }

   }

 }

 cout << s;

 return 0;

}

  • Obs: daca stai sa analizezi problema, vei observa ca de fapt rezolvarea este una foarte simpla. Trebuie doar sa luam in parte fiecare element (parcela) si sa verificam daca este mai mic decat toti vecinii sai, daca da atunci la suma se va adauga cat mai trebuie de completat pana la elementul curent (mini - a[i][j]). Iar dupa ce ai gasit un asemenea caz sa actualizezi acel element cu minimul respectiv gasit.

corinaruxandra34: Multumesc din suflet! M-ai ajutat enorm
Alte întrebări interesante