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


Ma ajutati cu aceasta problema?? Nu stiu cum sa salvez pozitia fara sa folosesc ceva vector. Ma gandesc sa fac cu frecventa v[9]={0} , dar la faza cu pozitia nu prea am idee..
Fișierul bac.in conține un șir de cel mult 106 numere naturale din intervalul [0,109], separate prin câte un spațiu. Se cere să se afișeze pe ecran pozițiile din șir pe care se află termeni precedați de un număr maxim de valori care au cifra unităților egală cu cifra unităților lor. Numerele afișate sunt separate prin câte un spațiu. Proiectați un algoritm eficient din punctul de vedere al timpului de executare.
Exemplu: dacă fișierul bac.in conține numerele 112 12 5 25 88 15 2 19 32 179 35 621
pe ecran se afișează numerele de mai jos (termenii 32, respectiv 35 respectă proprietatea cerută):
9 11


Badubadu: #include
#include
using namespace std;
ifstream f("bac.in");
int vf[10], vp[10], i, x, Max, k;
int main()
{
k = 0;
while (f >> x)
{
k++;
vf[x % 10]++;
vp[x % 10] = k;
}
Max = 0;
for (i = 0; i <= 9; i++)
if (vf[i] > Max)
Max = vf[i];
for (i = 0; i <= 9; i++)
if (vf[i] == Max)
cout << vp[i] << " ";
return 0;
}

Răspunsuri la întrebare

Răspuns de anonimul14
1

Răspuns:

La problema asta ma gandesc si eu , iti recomand sa nu folosesti un vector , algoritmul trebuie sa fie liniar , pt ca la bac problma asta trebuie sa fie eficienta din punct de vedere al timpului de executie si al memoriei.. pe scurt nu ai cum sa folosesti un vector sau un for in for sau cv de genu

Explicație:


alle13m: vectori de frecventa se mai pot folosi... asta fie ii cu for in for in for fie cu backtracking... da in ambele cazuri is luate toate cazurile.. deci eficient nu prea
alle13m: in ambele cazuri is toate cifrele de la 1 la 9...
alle13m: luate* toate cifrele.
pascugeorge451: int main()
{
while(fin>>x)
{
x=x%10;
v[x]++;
if(v[x]>Max)
Max=v[x];
}
for(i=0;i<=9;i++)
if(v[i]==Max)
cout<}
pascugeorge451: cout<
pascugeorge451: i trebuie dupa cout, dar nu ma lasa sa scriu
pascugeorge451: si Max=0 daca declari variabilele dupa int main()
Alte întrebări interesante