Advertisement
AlenAntonelli

Trazas de cobre (una pila++)

May 23rd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <stack>
  4.  
  5. #define ulti_pos sin_usar.top() ///pos de la ultima letra guardada
  6. #define ulti_let cadena[ulti_pos] ///la ultima letra guardada
  7.  
  8. using namespace std;
  9.  
  10. void conecta ( const string cadena, vector<int> &pares )
  11. {
  12.     stack<int> sin_usar; ///para guardar los sin_usaros de las letras sin usar;
  13.     ///string reduced; ///para guardar las letras sin usar;
  14.     int c=0;
  15.    
  16.     for (int i=0; i<cadena.size(); i++) /// corregi el size
  17.     {
  18.         char letra = cadena[i];
  19.        
  20.         if ( (sin_usar.size())&& (ulti_let!=letra) ) ///(si hay ulti_let) y esa es igua a la letra... se cancelan
  21.         {
  22.             c++;
  23.             pares.push_back(ulti_pos);
  24.             pares.push_back(i);
  25.            
  26.             sin_usar.pop();
  27.             ///reduced.pop_back(); /// corregi, ahora reduce
  28.         }
  29.         else
  30.         {
  31.             sin_usar.push(i);
  32.             ///reduced.push_back( letra ); /// corregi, ahora reduce
  33.         }
  34.     }
  35. }
  36.  
  37. int main()
  38. {
  39.     string cadena;
  40.     vector<int> pares;
  41.    
  42.     cin>>cadena;
  43.    
  44.     conecta(cadena, pares);
  45.     for (int i=0; i<pares.size(); i+=2)
  46.         cout<<1+pares[i]<<" "<<1+pares[i+1]<<endl;
  47.    
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement