Îmi poate explica cineva această problemă? Mulțumesc anticipat
Răspunsuri la întrebare
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.
► 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.