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