Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: weird  (Citit de 1953 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« : Noiembrie 29, 2009, 10:32:37 »

in problema insule ( trebuie sa unesc 2 insule (una de elem 1 cu alta de elem 2) printr-un pod de lungime minima)
incerc sa scriu lee-ul clasic pt toate elementele 1 iar apoi un lee pt toate elementele 2 (pasii doar pe "0"-apa)

problema e, ca pt elementele 1 nu imi functioneaza lee-ul decat pentru prima margine pe care o gaseste?

aici e codul
pls help, ma chinui de 4 ore

Cod:

for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
  o[i][j]=n*n*n*n*n;

for(i=1;i<=n;i++)
{   for(j=1;j<=m;j++)
if(a[i][j] == 1)
{
first=0;
        last=0;
o[i][j]=1;
qi1[last]=i;
qj1[last]=j;
    last++;
    while (!isempty()){
    i=qi1[first];
j=qj1[first];
    first++;
        inou = i+1;
    jnou = j;
      if (a[inou][jnou] == 0)
    if (o[inou][jnou] > 1+ o[i][j])
      {
   o[inou][jnou] = 1+ o[i][j];
   qi1[last] = inou;
   qj1[last] = jnou;
   last++;
      }
inou = i-1;
    jnou = j;
    if (a[inou][jnou] == 0)
   if (o[inou][jnou] > 1+ o[i][j])
   {
o[inou][jnou] = 1+ o[i][j];
qi1[last] = inou;
qj1[last] = jnou;
last++;
    }
inou = i;
    jnou = j+1;
    if (a[inou][jnou] == 0)
    if (o[inou][jnou] > 1+ o[i][j])
    {
   o[inou][jnou] = 1+ o[i][j];
   qi1[last] = inou;
   qj1[last] = jnou;
   last++;
    }
    inou = i;
    jnou = j-1;
    if (a[inou][jnou] == 0)
   if (o[inou][jnou] > 1+ o[i][j])
  {
o[inou][jnou] = 1+ o[i][j];
qi1[last] = inou;
qj1[last] = jnou;
last++;
  }
    }
}
}
Memorat
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #1 : Noiembrie 29, 2009, 11:07:51 »

asta e secventa mea de rezolvare a problemei   Brick wall
imi face doar pt primele 2 margini


Cod:
for(i=1;i<=n;i++)
{   for(j=1;j<=m;j++)
if(a[i][j] == 1)
{ first=0;
  last=0;
  o2[i][j]=1;
  qi2[last]=i;
  qj2[last]=j;
      last++;
    while (!isempty()){
    i=qi2[first];
j=qj2[first];
    first++;
        inou = i+1;
    jnou = j;
      if (a[inou][jnou] == 0)
    if (o2[inou][jnou] > 1+ o2[i][j])
      {
   o2[inou][jnou] = 1+ o2[i][j];
   qi2[last] = inou;
   qj2[last] = jnou;
   last++;
      }
inou = i-1;
    jnou = j;
    if (a[inou][jnou] == 0)
   if (o2[inou][jnou] > 1+ o2[i][j])
   {
o2[inou][jnou] = 1+ o2[i][j];
qi2[last] = inou;
qj2[last] = jnou;
last++;
    }
inou = i;
    jnou = j+1;
    if (a[inou][jnou] == 0)
    if (o2[inou][jnou] > 1+ o2[i][j])
    {
   o2[inou][jnou] = 1+ o2[i][j];
   qi2[last] = inou;
   qj2[last] = jnou;
   last++;
    }
    inou = i;
    jnou = j-1;
    if (a[inou][jnou] == 0)
   if (o2[inou][jnou] > 1+ o2[i][j])
  {
o2[inou][jnou] = 1+ o2[i][j];
qi2[last] = inou;
qj2[last] = jnou;
last++;
  }
if (a[inou][jnou] == 2)
    o[inou][jnou]=o2[i][j];
       }
for(k=1;i<=n;i++)
for(l=1;j<=m;j++)
o2[k][l]=n*n*n*n*n;

}

}
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #2 : Noiembrie 29, 2009, 11:35:51 »

Initializeaza o2[ i ][j]=-1. Fa o functie care sa iti verifice daca inou, jnou is valide plus tu ai uitat sa tratezi cazul cand a[inou][jnou] este egale cu 2
Memorat
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #3 : Noiembrie 29, 2009, 11:38:57 »

am facut acum chestia cu a[inou][jnou] == 2
tot e ceva gresit , ma poti ajuta ? cand si de ce trebuie resetat o ?
Cod:
for(i=1;i<=n;i++)
{   for(j=1;j<=m;j++)
if(a[i][j] == 1)
{
  first=0;
          last=0;
          o2[i][j]=1;
          qi2[last]=i;
          qj2[last]=j;
              last++;
                   while (!isempty())
       {
                     i=qi2[first];
                 j=qj2[first];
first++;
                             inou = i+1;
                         jnou = j;
if (a[inou][jnou] == 0)
if (o2[inou][jnou] > 1+ o2[i][j])
{
                         o2[inou][jnou] = 1+ o2[i][j];
                         qi2[last] = inou;
                         qj2[last] = jnou;
last++;
}
                     inou = i-1;
                         jnou = j;
                         if (a[inou][jnou] == 0)
if (o2[inou][jnou] > 1+ o2[i][j])
{
o2[inou][jnou] = 1+ o2[i][j];
                         qi2[last] = inou;
                         qj2[last] = jnou;
                         last++;
}
                     inou = i;
                         jnou = j+1;
if (a[inou][jnou] == 0)
                         if (o2[inou][jnou] > 1+ o2[i][j])
{
o2[inou][jnou] = 1+ o2[i][j];
                         qi2[last] = inou;
qj2[last] = jnou;
                         last++;
                            }
                         inou = i;
jnou = j-1;
                         if (a[inou][jnou] == 0)
                         if (o2[inou][jnou] > 1+ o2[i][j])
{
                         o2[inou][jnou] = 1+ o2[i][j];
qi2[last] = inou;
                         qj2[last] = jnou;
last++;
                            }
                   
}
                 
   

    }

}
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #4 : Noiembrie 29, 2009, 17:36:46 »

1. Eu nu vad unde ai introdus cazul a[inou][jnou] == 2, oricum daca nu-ti ordonezi codul nimeni nu o sa inteleaga nimic => nimeni nu o sa te poata ajuta, indenteaza, scrie subprogramre ...etc
2. fiecare problema are thread-ul ei  wink.
« Ultima modificare: Noiembrie 29, 2009, 19:55:03 de către alexandru » Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #5 : Noiembrie 29, 2009, 19:05:40 »

fiecare problema are thread-ul lui wink.

Grea e limba romana.  Shame on you
Memorat
dornescuvlad
Nu mai tace
*****

Karma: -138
Deconectat Deconectat

Mesaje: 234



Vezi Profilul
« Răspunde #6 : Noiembrie 30, 2009, 07:58:04 »

imi merge dar iau doar 82 de puncte (3 lungimi minime gresite).Nu tratez toate cazurile??
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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