Informatică, întrebare adresată de teodoraelena4, 9 ani în urmă

Se dă un vector cu n elemente, numere naturale. Verificați dacă vectorul are un element majoritar. Numim element majoritar o valoare pentru care numărul de apariții în vector este mai mare decât n/2.

Răspunsuri la întrebare

Răspuns de Lia96
2
#include
using namespace std;

int main() {
int n, c, v[100],i, ok;
cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
for(i=1; i{ok=0;
{ for(int j=i+1; j<=n; j++)

if(v[i]==v[j]){
c++;
v[j]=v[j+1];
}}
if(c>(n/2))
ok=1;

}
if(ok==1)
cout<<"are elem maj";
else
cout<<"nu are";
return 0;
}
Răspuns de express
27
Iti trimit o sursa eficienta in C++ la problema ta si arat si care este numarul majoritar. Daca nu ai nevoie poti sa renunti la afisarea variabilei c. Succes!
#include <iostream>
using namespace std;
int i, c, nr, nr1, n, v[100005];

int main()
{
    cin>>n;
    c=0;
    nr=0;
    for(i=1;i<=n;i++)
    {
        cin>>v[i];
        if(nr==0)  nr=1, c=v[i];
         else if(c!=v[i]) nr--;
             else nr++;
    }
    nr1=0;
    for(i=1;i<=n;i++)
        if(v[i]==c) nr1++;
    if(nr1>=n/2+1) cout<<"DA "<<c;
    else cout<<"NU";
    return 0;
}


Alte întrebări interesante