infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Razvan Atodiresei din Octombrie 24, 2013, 15:04:29



Titlul: Problema Matrice elemente distincte
Scris de: Razvan Atodiresei din Octombrie 24, 2013, 15:04:29
Acesta este enuntul :

Sa se determine multimea formata din elementele distincte de pe marginea unui tablou bidimensional patratic.

Ex: Pentru n=3 si matricea:

2 4 3
3 4 6
1 4 3

-----
se va afisa:
1 2 3 4 6

Aceasta este rezolvarea mea :

Citat
#include <iostream>
#include <fstream>

using namespace std;

fstream f("intrare.in",ios::in);
fstream g("iesire.out",ios::out);

int main()
{
    int a[10][10],b[10],c[10],i,j,n,k,g1,l;
    f>>n;
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    f>>a[j];

    k=0;
    for(i=0;i<n;i++)
    {
        c[k++]=a[0];
        c[k++]=a[n-1];
    }
    for(i=1;i<n-1;i++)
    {
        c[k++]=a
  • ;
        c[k++]=a[n-1];
    }
    l=0;
    b[l++]=c[0];
    for(i=1;i<k;i++)
    {
        g1=0;
        for(j=0;j<l && g1==0;j++)
        if(c==b[j])
            g1=1;
        if(g1==0)
        b[l++]=c;
    }

    for(i=0;i<l;i++)
    g<<b<<" ";


}

As dori sa stiu daca exista o solutie mai optima. O rezolvare mai rapida , am stat ceva si m-am gandit  , dar asta e singurul mod care mi-a trecut prin minte.

Mersi.


Titlul: Răspuns: Problema Matrice elemente distincte
Scris de: George Marcus din Octombrie 24, 2013, 15:42:58
Totul depinde de intervalul de valori pe care pot sa le ia elementele matricei. In cazul in care elementele pot fi super mari (pe la 10^9) atunci rezolvarea ta e aproape optima (poti sa tii elementele unice intr-o structura de date). In cazul in care elementele sunt mici, poti construi un vector de frecvente.