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

Îmi poate explica cineva această problemă? Mulțumesc anticipat

Anexe:

Răspunsuri la întrebare

Răspuns de ionatanferariu
2

Răspuns:

Două cartonașe se potrivesc, dacă numărul scris în partea dreaptă a primului cartonaș este egal cu numărul scris în partea stângă a al celui de-al doilea cartonaș, etc.

Exemplu: dacă n = 3 și cartonașele:

1 3 3 2 2 1 => există 3 cartonașe care se potrivesc. Există 2 perechi de cartonașe care se potrivesc: 1 3 cu 3 2 și 3 2 cu 2 1.

Răspuns de andrei750238
7

► Cod C++

#include <iostream>

using namespace std;

int main() {

int n;

int s[100];

int d[100];

cout << "Numar cartonase : ";

cin >> n;

for (int i = 0; i < n; i++) {

 cout << "\nDate cartonas #" << i << "  : ";

 cin >> s[i] >> d[i];

}

//Numar cartonase care se potrivesc

int potriviri = 0;

for (int i = 0; i < n-1; i++) {

 if (d[i] == s[i + 1]) potriviri++;

}

cout << "\nNr potriviri : " << potriviri;

//Cea mai lunga secventa de cartonase care se potrivesc

int secv_curent = 1, secv_max=0, nr_secv=0;

for (int i = 0; i < n - 1; i++) {

 if (d[i] == s[i + 1]) secv_curent++;

 else {

  if (secv_curent == secv_max)

   nr_secv++;

  else if (secv_curent > secv_max) {

   secv_max = secv_curent;

   nr_secv=1;

  }

  secv_curent = 1;

 }

}

if (secv_curent == secv_max) nr_secv++;

else if (secv_curent > secv_max) {

 secv_max = secv_curent;

 nr_secv = 1;

}

cout << "\nNr cartonase secventa maxima : " << secv_max;

cout << "\nNr secvente maxime : " << nr_secv;

}

Explicatie :

Asa cum sugereaza cerinta comparam partea stanga a fiecarui cartonaj cu partea dreapta a cartonasului urmator.

Anexe:

andrei750238: Daca ai nelamuriri voi incerca sa le rezolv in comentarii
andreeadiana98: mulțumesc mult ! Mă chinui de ceva timp pe această problemă,dar acum am înțeles modul de gândire
andreeadiana98: multe aprecieri
Alte întrebări interesante