Fie a un vector cu (n<=50) componente de tip int. Determinati un element din vector care se repeta de cele mai multe ori.
Programul pe care l-am scris il inserez mai jos.
1) Este vreo metoda mai eficienta?
2) Este vreo metoda eficienta pentru a nu verifica valorile care s-au verificat anterior?
(de ex ptu {5, 6, 1, 7, 5, 1, 90, 5, 8} 5 se va verifica de 3 ori) eliminarea tuturor valorilor care s-au verificat si folosirea altui vector in care introducem valorile verificate mi se par cam ineficiente.
#include <iostream.h>
int main()
{
int a[50], i, j, n, val, nr=0, nrmax=0;
cout<<"n="; cin>>n;
cout<<"Introduceti componentele vectorului:";
for (i=0; i<n; i++) cin>>a[i];
for (i=0; i<n; i++)
{
for (j=1; j<n; j++)
if (a[i]==a[j]) nr++;
if (nr>nrmax) nrmax=nr, val=a[i];
}
cout<<val;
return 0;
}
artur99:
:D mda, afisat iei cu log-ul de la apache :D
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
#include <limits.h>
using namespace std;
const int NMAX = 200000000;
int nr[NMAX];
int main()
{
int n, x, Max = 0, poz = 1;
cin >> n;
for(int i=1; i<=n; i++) {
cin >> x;
nr[x]++;
if(nr[x] >= Max) { Max = nr[x]; poz = x; }
}
cout << '\n' << poz << '\n';
}
Si fara vectori :)
#include <limits.h>
using namespace std;
const int NMAX = 200000000;
int nr[NMAX];
int main()
{
int n, x, Max = 0, poz = 1;
cin >> n;
for(int i=1; i<=n; i++) {
cin >> x;
nr[x]++;
if(nr[x] >= Max) { Max = nr[x]; poz = x; }
}
cout << '\n' << poz << '\n';
}
Si fara vectori :)
#include <limits.h>
using namespace std;
const int NMAX = 200000000;
int nr[NMAX];
#define nr (nr + 100000000)
int main()
{
int n, x, Max = 0, poz = 1;
cin >> n;
for(int i=1; i<=n; i++) {
cin >> x;
nr[x]++;
if(nr[x] >= Max) { Max = nr[x]; poz = x; }
}
cout << '\n' << poz << '\n';
}
Răspuns de
1
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n, i, max_pos=-1, max_count=-1, tmp1, tmp2, tmp3;
cin>>n;int a[n];
for (i=0;i<n;i++) cin>>a[i];
sort(a, a+n);
for(i=0;i<n;i++){
tmp1=i+1;
tmp2=i;//poz curenta
tmp3=1;//nr de nr gasite
while(a[i]==a[tmp1]){
tmp3++;
tmp1++;
}
if(tmp3>max_count){
max_pos=tmp2;
max_count=tmp3;
}
i=tmp1-1;
}
cout<<a[max_pos];
return 0;
}
#include <algorithm>
using namespace std;
int main(){
int n, i, max_pos=-1, max_count=-1, tmp1, tmp2, tmp3;
cin>>n;int a[n];
for (i=0;i<n;i++) cin>>a[i];
sort(a, a+n);
for(i=0;i<n;i++){
tmp1=i+1;
tmp2=i;//poz curenta
tmp3=1;//nr de nr gasite
while(a[i]==a[tmp1]){
tmp3++;
tmp1++;
}
if(tmp3>max_count){
max_pos=tmp2;
max_count=tmp3;
}
i=tmp1-1;
}
cout<<a[max_pos];
return 0;
}
Alte întrebări interesante
Chimie,
8 ani în urmă
Franceza,
8 ani în urmă
Studii sociale,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Chimie,
9 ani în urmă