利用雜湊表實現的字謎遊戲

2021-06-22 07:45:54 字數 2544 閱讀 4344

1.老樣子,先介紹一下我的程式和方法

輸入乙個二維的字母陣列和乙個單詞表(hash表),目標是找出字謎中的單詞,這些單詞可能是水平,垂直厚是沿任何對角線方向放置的,如

a     s    d

df     g

c     a     t則生成的單詞為a,cat,at

2.我解決這個問題的步驟

(1)編寫hash函式,了解poly法則

(2)如何讀入和修改乙個單詞表,以及hash入hash表中

(3)雜湊模板函式的整理

(4)產生乙個隨機的6*6字元矩陣

(5)產生矩陣中的單詞

3.剛開始寫完這個**的時候興由於遇到了一些個問題,就把它給老師看看,請他幫忙修改一下。無奈畢竟到了學期末,老師總說他忙的很,沒時間看。。。哎,沒辦法,我也得複習考試啊,誰叫自己是數學系的,又那麼渣呢。就先把這個**隔著吧。對了,問題大概是處在由單詞表生成單詞的幾個迴圈中,等到暑假有空了好好整理一下好了。。。

4.**實現

第一部分為雜湊表的類

#ifndef hashtable_h

#define hashtable_h

#include#include#include#includeusing namespace std;

class hashtable

;#endif // hashtable_h

第二部分為雜湊錶類的定義

#include "..\include\hashtable.h"

#include#includeint hash(const string &key)

return poly;

}unsigned nextprime(unsigned prime)

if(i>k) break;

}return nextprim;

}hashtable::hashtable():currentsize(0)

hashtable::~hashtable()

hashtable::hashtable(const hashtable& rhs):currentsize(0)

hashtable& hashtable::operator=(const hashtable& rhs)

//利用hash函式給出插入hashtable的值

int hashtable::myhash(const string &x) const

return hashval;

}//清空hashtable

void hashtable::makeempty()

bool hashtable::remove(const string &x)

bool hashtable::insert(const string &x)

void hashtable::rehash()

}

第三部分  其它相關函式的定義

#ifndef wordlist_h_included

#define wordlist_h_included

#include#include#include#include#include#includeusing namespace std;

typedef vectortext;

//讀入文件中的每個單詞

text retrieve_text()

for(n=j,str.clear();n<6;n++)

for(m=i,str.clear();m<6;m--)

for(n=j,str.clear();n<6;n--)

m=i,n=j;str.clear();

while(m>0&&n>0)

m=i,n=j;str.clear();

while(m>0&&n<6)

m=i,n=j;str.clear();

while(m<6&&n>0)

m=i,n=j;str.clear();

while(m<6&&n<6)}}

return sch_word;

}#endif // wordlist_h_included

第四部分  測試程式

#include #include "include/wordlist.h"

#include "include/hashtable.h"

using namespace std;

int main()

{ hashtable myhash;

vectorlist;

list=retrieve_text();

make_dictionary(list);//將所有單詞記錄在乙個文字中

for(unsigned i=0;isearch;

search=sch_word();

cout<<"********************"

<<"the existing words in the dictionary"

<<"********************"<

雜湊表(雜湊表)的實現

雜湊函式直接用key size的形式,size為雜湊表的大小。衝突處理採用平方探測法,為保證可以探測到整個雜湊表空間,雜湊表大小設定為4k 3形式的素數。當雜湊表中的元素過多時會造成效能下降,這時應該倍增雜湊表的大小,重新計算原來雜湊表中每個元素在新的雜湊表中的位置。雜湊表的實現 hashtable...

雜湊表 雜湊表 的實現原理

雜湊表可以表述為,是一種可以根據關鍵字快速查詢資料的資料結構。通常情況下,不論雜湊表中資料有多少,增加,刪除,改寫資料的複雜度平均都是o 1 效率非常高。如果說每乙個資料它都對應著乙個固定的位置,那我們查詢特定乙個資料時,就可以直接檢視這個資料對應的位置是否存在資料。乙個形象的例子就是學生在教室中的...

雜湊表(雜湊表) C 實現

雜湊函式就是 關鍵字key 到 值value 的對映 value f key value反映的是關鍵字key的儲存位址。直接定址法 f key a key b 例如存放不同出生年份的人口數量,出生年份是關鍵字,那麼可以用直接定址法。直接定址法的優點是簡單均勻,也不會產生衝突 缺點是該方法適合表比較小...