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
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
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
9 ani în urmă