Răspuns :
Buna, sa iti fie de folos. Am facut ceva banal. Mai este o metoda pe baza algoritmului lui Monte Carlo si mai este inca o metoda parca cu verificarea vecinilor.
#include <iostream>
using namespace std;
int main()
{
int *vLBari;
int **matrix;
//Citeste n
int n=0;cin>>n;
vLBari = new int[n];
int maxColumnLength = 0;
//Citire elemente vector lungime coloane
for(int i = 0; i<n;i++)
{
cin >> vLBari[i];
if(vLBari[i] > maxColumnLength)
maxColumnLength = vLBari[i];
}
matrix = new int*[n]; //Creare matrice
for(int i = 0; i < n; i++)
matrix[i] = new int[maxColumnLength];
for(int j=0;j<n;j++)
for(int i=maxColumnLength-1;i>=maxColumnLength - vLBari[j];i--)
{
matrix[i][j] = 1;
}
//Completam matricea astefl incat sa ramana = 0 doar cantitatea de apa.
for(int i =0; i<maxColumnLength;i++)
{
for(int j =0; j<n && matrix[i][j] != 1;j++)
{
if(matrix[i][j] == 0)
matrix[i][j] = 2;
}
for(int j =n-1; j>=0 && matrix[i][j] != 1;j--)
{
if(matrix[i][j] == 0)
matrix[i][j] = 2;
}
}
//Verificam cantitatea maxima de apa si o salvam in variabila count
int count = 0;
for(int i =0; i<maxColumnLength;i++)
{
for(int j =0; j<n;j++)
if(matrix[i][j] == 0)
count++;
}
cout<<"Cantitatea maxima de apa retinuta este: "<<count;
return 0;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că resursele disponibile v-au fost de ajutor. Pentru întrebări sau asistență suplimentară, nu ezitați să ne contactați. Ne bucurăm să vă revedem în curând și vă invităm să ne salvați în lista de site-uri preferate!