Код понимания вопроса - PullRequest
3 голосов
/ 26 мая 2011

Я просматривал один код в сети .

Я не понял следующую логику.Этот код работает и работает очень быстро.

for (int i = 0; i < typo_word_vec.size(); i++)
{
        float each_typo_word_len = (float)typo_word_vec[i].size();
        int start_range = each_typo_word_len - floor((each_typo_word_len / lower_bound_word_size) * each_typo_word_len) - 1;
        if (start_range < 1)
                start_range = 1;
        int end_range = each_typo_word_len + ceil((each_typo_word_len / upper_bound_word_size) * each_typo_word_len) + 1;
        if (end_range > src_word_max_len)
                end_range = src_word_max_len - 1;

        call_get_dist(i, start_range, end_range);
}  

Но я не понимаю, какова логика использования start_range и end_range Какой алгоритм или теория используются здесь.

1 Ответ

1 голос
/ 27 мая 2011

Вы действительно должны были опубликовать еще несколько строк - нам определенно нужно проверить весь код, чтобы что-то понять.

Насколько я понимаю, слова «источника» упорядочены по размеру. Слова «кандидат» могут быть короче или длиннее, чем их потенциальное соответствие. Для этого используются start_range и end_range.

Хотя мне трудно понять, почему автор не использует

start_range = 0;
end_range = src_word_max_len;

EDIT: хорошо, это всего лишь оптимизация с его стороны (цитата readme.txt ):

Сначала я решил эту проблему, используя python и php, однако мое решение постоянно отклонялось, поскольку его решение занимает слишком много времени (мое предположение). В каталог "cpp" я загрузил свое решение с помощью c ++ с использованием STL и, наконец, принял его (основная идея алгоритма почти такая же: сокращение диапазона сканирования исходных файлов). В настоящее время я планирую попробовать эту проблему, используя другой язык, такой как как Java в следующий раз. С постановкой задачи можно ознакомиться здесь: http://www.facebook.com/careers/puzzles.php?puzzle_id=17

Он просто произвольно определяет диапазон, достаточно большой, чтобы иметь достаточно высокую вероятность нахождения в нем подходящего подходящего слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...