程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVA 10391 - Compound Words 字符串hash

UVA 10391 - Compound Words 字符串hash

編輯:C++入門知識

 

題目大意:

給定一個詞典(已經按照字典序排好),要求找出其中所有的復合詞,即恰好由兩個單詞連接而成的單詞。(按字典序輸出)

思路:

對於每個單詞,存入Hash表,然後對每個單詞拆分。

Hash函數的選取可以看:https://www.byvoid.com/blog/string-hash-compare/

我的這個是BKDRHash。

乘以一個比他大的素數。

關於:0x7fffffff(即int_max,最大的整型范圍。why? 16進制每位由4個二進制表示,7二進制位0111,其他的f為1111.)

 

 

#include
#include
const int MAXN=120000+10;
int head[MAXN],len,n;
char data[MAXN][30];
typedef unsigned long long LL;
struct edge
{
	int index,next;
}e[MAXN];

int gethash(char *s)
{
	LL seed=131;
	LL res=0;
	int L=strlen(s);
	for(int i=0;i

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved