SG
https://www.hackerrank.com/challenges/the-grid-search/problem
Вообщем, имплементация следующая:
1. заполняю массив из хешей шаблона по строкам
2. делаю деревья символов, имеющие следующий вид:
struct Grid_Leaf {прохожу по всей матрице и создаю дерево, состоящее из n(кол-во строк в матрице) ветвей 1 уровня, корень - 0 уровня.
long n;
long sum_last_n;
bool is_root;
int depth;
Grid_Leaf* prev;
Grid_Leaf* next;
int row;
};
считаю хеши sum_last_n элементов
если она совпадает с хешем первой строки в паттерне, то записываю это как потеншиал матчер
и потом уже прохожу по всем потенциальным совпадениям и строка за строкой используя дерево сравниваю хеши в нужных столбцах
Насколько я понимаю, то асимптотика будет O(n * m + x * y), где n, m - это кол-во строк и столбцов в G, а x, y - кол-во столбцов и строк в шаблоне
Я правильно понимаю ?