Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema Matrice elemente distincte  (Citit de 2045 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
razvan.atd
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« : 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.
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #1 : 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.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines