Colier [OLI Cluj 2009]

C/C++ este un limbaj multi-paradigmă de nivel mediu, orientat pe obiecte, folosit pe scară largă în industria software datorită echilibrului dintre viteză şi complexitate. Dacă ai nelămuriri în legătură cu acest limbaj sau vrei să ne înveți ceva chiar tu, intră aici.

Colier [OLI Cluj 2009]

Postby jolgau » 10 Jan 2012, 19:38

https://docs.google.com/viewer?pid=explorer&srcid=0B_BCGBf99QSFMWE4MGEwMTItODZmOC00NzU3LWExNDMtMmQ0YjJhMjBjZDc4&chrome=false&docid=e2857257299735ceeede5df69efd5aa8|87c54bddc5fc755cfe108178f0cc1f9e&chan=EgAAABOPSMLpne/CxG%2Bp8aQwcAYU/ie52X4SKuO0dCKZlWIE&authkey=CMXQ8M0C&a=v&rel=zip;z5;OLICluj2009+P2+09+Colier.doc

Am mai incercat o problema dar aceasta problema trece doar 2 teste din 10;

  1. #include<iostream>
  2. #include<fstream>
  3.  
  4. #define NR 1001
  5. #define IN "colier.in"
  6. #define OUT "colier.out"
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.     int a[NR],n,k,i,j,ctr=0,max=0,b[NR];
  13.  
  14.     ifstream f(IN);
  15.     ofstream g(OUT);
  16.  
  17.     f>>n>>k;
  18.  
  19.     for(i=1; i<=n; i++)
  20.        f>>a[i];
  21.  
  22.  
  23.     // INSFARSIT
  24.     for(i=1; i<=n; i++)
  25.        {
  26.        if(k < n)
  27.              b[i] = a[k+1];
  28.  
  29.        else
  30.           {
  31.           b[i] = a[k];
  32.           k=0;
  33.           }
  34.        k++;
  35.        }
  36.  
  37.     for(i=1; i<=n; i++)
  38.         {
  39.         ctr=1;
  40.         for(j=i+1; j<=n; j++)
  41.            {
  42.            if(b[i] == b[j])
  43.               ctr++;
  44.            else
  45.              {
  46.               if(ctr > max)
  47.                  max = ctr;
  48.              }
  49.            }
  50.         }
  51.     g<<max;
  52.  
  53.     return 0;
  54. }
  55.  


Imi puteti da niste explicati, sugesti,orice pentru ca nu ma prea descurc la problema aceasta....
0,0p / 0 votes
User avatar
jolgau
Bit
 
Joined: 11 Dec 2010
Status: 0

Re: Colier [OLI Cluj 2009]

Postby smith » 10 Jan 2012, 19:52

Zice:
Google docs wrote:Sorry, we are unable to retrieve the document for viewing or you don't have permission to view the document.
Please try again later.
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: Colier [OLI Cluj 2009]

Postby jolgau » 10 Jan 2012, 20:02

0,0p / 0 votes
User avatar
jolgau
Bit
 
Joined: 11 Dec 2010
Status: 0

Re: Colier [OLI Cluj 2009]

Postby smith » 10 Jan 2012, 20:50

Ai un stil foarte ciudat de a programa. Stil de școală românească, în orice caz... Felul de a gândi o problemă nu pot să ți-l impun/induc imediat, dar aș putea să îți recomand un ghid pentru a scrie cod frumos. Citește cel puțin secțiunea de formatare - asta când ai timp liber.

Lăsând la o parte treburile astea și faptul că se putea construi colierul-desfășurat într-un mod mai elegant decât prin a folosi un vector auxiliar (b[NR]), felul în care cauți secvența maximă este greșit.

Testează mintal (folosind algoritmul din codul tău) pentru următorul șir gata desfășurat (presupui că acesta este conținutul lui b):


La tine se întâmplă așa:
Iei primul element. Apoi cu al doilea for parcurgi restul șirului.
Iei al doilea element (de ce?) și apoi parcurgi restul șirului.

Nu mi se pare în regulă. Printr-o singură parcurgere poți verifica secvența de lungime maximă. Plus că mai ai o greșeală - algoritmul nu se oprește cu incrementarea după ce s-a terminat o secvență. Eu aș parcurge șirul cu un while și atât. Sper să te prinzi.
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: Colier [OLI Cluj 2009]

Postby jolgau » 10 Jan 2012, 23:25

smith am reusit sa adaug elementele folosind un singur vector, dar inca nu am reusit sa rezolv parcurgerea. Mi-a trecut in cap sa folosesc http://www.cs.utexas.edu/~moore/best-ideas/mjrty/example.html, dar nu cred ca o sa mearga... Mai imi dai te rog cateva indicii ? :D
0,0p / 0 votes
User avatar
jolgau
Bit
 
Joined: 11 Dec 2010
Status: 0

Re: Colier [OLI Cluj 2009]

Postby smith » 10 Jan 2012, 23:55

  1. i = 1;
  2. lungime_curenta = 1
  3. cat_timp i<n
  4.     daca b[i] == b[i+1] atunci
  5.         lungime_curenta++
  6.     altfel
  7.         daca max < lungime_curenta atunci
  8.             max = lungime_curenta
  9.         sf_daca
  10.         lungime_curenta = 1
  11.     sf_altfel
  12.     i++
  13. sf_cat_timp


Sper să fie bine :-??
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: Colier [OLI Cluj 2009]

Postby jolgau » 11 Jan 2012, 09:36

Merge,multumesc mult.
0,0p / 0 votes
User avatar
jolgau
Bit
 
Joined: 11 Dec 2010
Status: 0


Return to C / C++

Who is online

Users browsing this forum: No registered users and 0 guests

cron