程式設計珠璣 第二章變位詞程式的實現

2021-06-08 02:52:55 字數 1021 閱讀 3806

題目描述:給定乙個英語字典,找出其中的所有變位詞集合。例如,「pots」、「stop」、「tops」互為變位詞,因為每乙個單詞都可以通過改變其他單詞中的字母的順序來得到。

程式主要有三部分組成,sign、sort和squash。我們用下圖來說明(假設要處理的單詞有六個pans pots opt snap stop tops),處理結果如下:

可見sign是將單詞進行排序(將pans排成anps,按照字母序),sort是對排好序的所有單詞再進行一次排序,程式**如下: 

#include#include#include#define maxwordnum 100000

#define maxwordlen 100

using namespace std;

struct word_all;

word_all all[100000];

bool cmp(word_all a,word_all b)

int main()

sort(all,all+num,cmp);

//列印經過處理過的資料

//for(int i=0;i0)

printf("\n");

strcpy(oldsig,all[j].sig);

linenum++;

printf("%s ",all[j].word);

} return 0;

}

輸出結果為:

乙個小插曲:程式設計珠璣上寫的比較單詞大小的函式int charcomp(char *x,char *y);

這種函式應用到sort最後乙個引數中是不行的,第一點:首先因為陣列是char型別的,應該使用char x,char y;

第二點:由於最後乙個比較函式是bool型別的,x-y比如說x=3,y=4,不管x-y還是y-x返回都不等於零,返回的為true,所以是不能作為比較條件的。應該改為 return x

程式設計珠璣 變位詞程式的實現

這個程式的實現有助於壓縮key的大小,使查詢效率更高 1.問題描述 給定一本英語單詞詞典,請找出所有的變位詞集。所謂的變位詞是指,組成各個單詞的字母完全相同,只是字母排列的順序不同。2.解決思路 程式設計珠璣的變位詞程式要按照三個步驟來執行,其中前乙個步驟程式的輸出作為下乙個步驟程式的輸入 第一 程...

程式設計珠璣 變位詞程式的實現

這個程式的實現有助於壓縮key的大小,使查詢效率更高 1.問題描述 給定一本英語單詞詞典,請找出所有的變位詞集。所謂的變位詞是指,組成各個單詞的字母完全相同,只是字母排列的順序不同。2.解決思路 第一 程式標識單詞,第二 程式排序標識後的檔案,第三 程式將這些單詞壓縮為每個變位詞類一行的形式 下面是...

程式設計珠璣第二章

a題給定乙個最多包含40億個隨機排列的32位整數的順序檔案,找出乙個不在檔案中一32位整數。1 在檔案中至少存在這樣乙個數?2 如果有足夠的記憶體,如何處理?3 如果記憶體不足,僅可以用檔案來進行處理,如何處理?答案 1 32位整數,包括 2146473648 2146473647,約42億個整數,...