gpt4 book ai didi

c++ - 我如何实现这个伪代码?

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:19 26 4
gpt4 key购买 nike

我正在尝试编写一个函数来将字符串散列为整数,这样我就可以在我的散列映射中使用字符串作为键。我需要使用下面编写的伪代码,但我仍然无法让它正常工作。该程序是输入一个德语单词(作为键)并返回它的英文翻译(作为值)。

伪代码:

Parameters : natural numbers i, h = 0; Field s
for i = 0 to i <length_of (s)
h = (h * 128 + s [i]) mod M;
Result : h.

我的代码:

#include "pch.h"
#include <iostream>
#include <string>
#define M 661
using namespace std;

struct entry {
string key_de, val_en;
};

int HASH(int i, int h = 0, struct entry ex_array[])
{
for (i = 0; i < sizeof(ex_array) / sizeof(ex_array[0]); i++)
{
h = (h * 128) + ex_array[i] % m;
}
return h;
}

int main()
{

}

最佳答案

这将是您可以实现的方式

#include <string>
#define M 661

int Hash(std::string s, int h = 0){
for(int i = 0 ; i < s.length(); i++)
h = (h * 128 + s [i]) % M;
return h;
}

不过我有一张便条。在您提供的伪代码中,我不太确定所提供的“参数”是在谈论实际的函数参数,因为传入“i”似乎有点奇怪,因为您立即将其设置为 0(对于 i = 0 。 ..).但是,如果您确实需要传递“i”,那么您只需将其添加到参数列表的开头,然后从 for 循环中删除“int”即可。

然后就可以用这个函数得到德语单词的哈希值了。

这是一个如何使用它的例子

string arr[M]; //assuming M is size of array
std::string germanWord{"german"}; //some German word
std::string englishWord{"english"} //same word but in English
arr[Hash(germanWord)] = englishWord //adding new English word to the array
string s = arr[Hash(germanWord)] // accessing that word from the array

如果您要制作一个实际的 HashMap (例如您如何处理冲突),您可能还需要考虑其他事情,但如果您只想实现该伪代码,这就足够了。

祝你好运!

关于c++ - 我如何实现这个伪代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59291431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com