[Algorytmy] Podróżnik - VI OIG

janek880
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 23 maja 2013, o 17:33
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Algorytmy] Podróżnik - VI OIG

Post autor: janek880 »

UWAGA UWAGA-JEŚLI NIE ROZWIĄZAŁEŚ JESZCZE TEGO ZADANIA I CHCESZ NAD NIM W PRZYSZŁOŚCI POMYŚLEĆ-NIE CZYTAJ TEGO POSTA. MOŻE ZAWIERAĆ ON POPRAWNE ROZWIĄZANIE.
Witam!!
Mam problem z zadaniem podróżnik z VI OIG i prosze o pomoc.Mój pomysł opiera się na tym,iż dla każdego zapytania(etapu podróży) przechodze ten etap raz,ustalając dwie zmienne pion i poz i zmniejszając je lub zwiększając w przypadku każdej litery.Zapamiętuje dla obu tych zmiennych max i min z nich,z czego potem otrzymam wynik.Po przejsciu raz licze w nim wystapienia n i s oraz e i w.I dla każdej tej pary w zależności którego czynnika jest wiecej odejmuje lub dodaje do poz/pion iloczyn roznicy wystapien i k-1. Potem wypisuje maxpion-minpion i podobnie z poziomem.Ale nie działa.Czy ktoś mógłby wskazać mi błąd w kodzie/ w pomyśle rozwiązania.Poniżej kod .
Z góry dzieki

Kod: Zaznacz cały

#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
int n;
cin>>n;
int ile;
int maxpion=0;
int minpion=0;
int maxpoz=0;
int minpoz=0;
int poz=0;
int pion=0;
for(int x=0;x<n;++x)
{
     string s;
     cin>>ile>>s;
     int dl=s.size();
     int t=ile-1;
     int ilen=0;
     int iles=0;
     int ilee=0;
     int ilew=0;
     for(int i=0;i<dl;++i)
     {
         if(s[i]=='N')
         {
              pion++;
              if(pion>maxpion)
              {
                   maxpion=pion;
              }
              ilen++;
          }
          else
          if(s[i]=='S')
          {
               pion--;
               if(pion<minpion)
               {
                       minpion=pion;
               }
                iles++;
           }
           else
           if(s[i]=='W')
           {
                 poz++;
                 if(poz>maxpoz)
                 {
                       maxpoz=poz;
                 }
                  ilew++;
            }
            else
            if(s[i]=='E')
            {
                   poz--;
                   if(poz<minpoz)
                   {
                          minpoz=poz;
                    }
                    ilee++;
             }
   }
   if(ilen>iles )
   {
      int wy=ilen-iles;
      maxpion=maxpion+(pion*t);
      pion+=pion*t;
      if(pion>maxpion)
              maxpion=pion;
   }
   else
   if(ilen<iles )
  {
       int wy=iles-ilen;
       int z=pion;
       minpion=minpion-(z*t);
       pion-=pion*t;
       if(minpion>pion)
               minpion=pion;
  }
  if(ilee<ilew )
  {
       int wy=ilew-ilee;
       maxpoz=maxpoz+(wy*t);
       poz+=poz*wy;
       if(maxpoz<poz)
             maxpoz=poz;
  }
  if(ilee>ilew )
  {
       int wy=ilee-ilew;
       int z=poz;
       minpoz=minpoz-(wy*t);
       poz+=poz*wy;
       if(poz<minpoz)
          minpoz=poz;
  }
}
cout<<maxpion-minpion<<" "<<maxpoz-minpoz<<endl;
system("pause");
return 0;
}
-- 6 gru 2013, o 12:19 --

Jeśli czegoś w poście brakuje-byłbym wdzięczny administratorowi za pomoc lub edycję,a nie przenoszenie do kosza,gdyż to mój chyba drugi temat więc dopiero poznaję co i jak.
Pozdrawiam i z góry dziękuję
Ostatnio zmieniony 6 gru 2013, o 19:02 przez Afish, łącznie zmieniany 1 raz.
Powód: Nieczytelny zapis.
ODPOWIEDZ