Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include "ReadWriter.h"
  2. //Node.h подключен в ReadWriter.h, поэтому здесь не надо
  3.  
  4. using namespace std;
  5.  
  6. //Можно добавлять любые вспомогательные методы и классы для решения задачи.
  7.  
  8. //Задание реализовать метод декодирования
  9. void decodeLZ77(Node* arr, int n, string& res)
  10. {
  11.     for (int i = 0; i < n; i++)
  12.     {
  13.         if (arr[i].len == 0) {
  14.             res += arr[i].ch;
  15.             continue;
  16.         }
  17.  
  18.         auto start = static_cast<int>(res.length() - arr[i].offs);
  19.         for (int j = 0; j < arr[i].len; j++) {
  20.             res += res[start + j];
  21.         }
  22.  
  23.         res+=arr[i].ch;
  24.     }
  25. }
  26.  
  27. int main(int argc, const char * argv[])
  28. {
  29.     ReadWriter rw;
  30.    
  31.     int n = rw.readInt();
  32.     Node* arr = new Node[n];
  33.  
  34.     rw.readCode(arr, n);
  35.  
  36.     string res = "";
  37.     //декодируем в строку
  38.     decodeLZ77(arr, n, res);
  39.     //записываем ответ в файл
  40.     rw.writeString(res);
  41.  
  42.     delete[] arr;
  43.  
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement