Как завершить хэш -код этого метода Хорнера? (C ++) [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как завершить хэш -код этого метода Хорнера? (C ++) [закрыто]

Сообщение Anonymous »

Мы делаем хэш -код в C ++, используя метод Хорнера. Он работает в основном с двумя из наших 4 тестовых случаев, но мы не можем выяснить, почему это не работает для последних двух случаев.

Код: Выделить всё

unsigned long long horner_hash(string str, int p, int m)
{
vector poly; /*TURN STRINGS INTO ASCII*/
for (int i = 0; i < str.size(); i++)
{
poly.push_back(static_cast(str[i]));
}

unsigned long long result = poly[0]; // Initialize

for (int i = 1; i < poly.size(); i++)
{
result = (result * p + poly[i]) % m;
}

return result;
}
Наши тестовые примеры:
hello
world
hashing
Функция
(они должны быть как)
/> ============================================================================================
#include
#include

unsigned long long horner_hash(
const std::string &str,
int p, int m)
{
auto result =
static_cast(str[0]);

for (int i = 1; i < str.size(); i++)
{
auto ull =
static_cast(str);
result = (result * p + ull) % m;
}

std::cout 99162322
world => 113318802
hashing => 186817213
function => 368739183
< /code>
Нет явно не так. Итак, еще раз:
Что происходит, когда «это не работает»

Подробнее здесь: https://stackoverflow.com/questions/797 ... ash-code-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»