現在大多數的文字編輯器都的單詞究錯功能,即你輸入的單詞不能夠在詞典中找到的話,他就會建議你修改,然後給出幾個候選項。
現在我們就要來寫乙個生成候選項的演算法。
具體演算法是這樣的,如果輸入的單詞能夠在字典中找到,那麼就不用推薦,否則就在字典中找那些能夠通過修改乙個字母得到目標單詞的選項作為推薦。
修改乙個字母包括刪除乙個字母,新增乙個字母,以及把單詞中的某個位置的字母進行替換。
輸入單組測試資料。
前面若干行給出字典中的單詞,每行乙個,遇到"#「表示字典中的單詞輸入結束。
接下來若干行給出使用者輸入的單詞,每行乙個,遇到」#「結束。
字典中單詞不超過15000個。使用者輸入的單詞不超過60個。每個單詞只由小寫字母組成,並且非空,長度不超過20。
輸出對於每乙個使用者的輸入,如果在字典中能夠找到就輸出 「單詞 is correct」。否則就輸出"單詞: 候選1 候選2 …」,候選項按照輸入的順序進行排列。如果找不到候選項,則輸出"單詞:」。具體可參見樣例。
輸入樣例
樣例輸入1
ihas
bemore
meif me
mcontestooi
輸出樣例
樣例輸出1
me is correct
m: i me
contest:
oo:i is correct
資料量小,暴力窮舉
#includeusing namespace std;
string a[15010];
mapb;
int main()
while(cin>>tmp&&tmp[0]!='#')
if(dif<=1)
cout<1) break;
}if(dif<=1)
cout<1) break;
}if(dif<=1)
cout<}
} cout<} }
return 0;
}
RTTI特性小究
rtti特性小究 dynamic cast轉換操作符和typeid操作符 要使用rtti特性,必須包含標頭檔案,並且要使用 gr開啟執行時資訊,在visual studio中 開啟該項目的 屬性頁 對話方塊。有關詳細資訊,請參見如何 開啟專案屬性頁。單擊 c c 資料夾。單擊 語言 屬性頁。修改 啟...
氣泡排序究極奧義
原理 兩個for迴圈,外層for迴圈控制比較輪數 趟數 內層for迴圈比較每一輪中的前後兩項 次數 內層for迴圈每比較一輪就產生乙個當前迴圈的最大值 由於個別陣列本身的排列的特殊性 導致根本不需要將所有的趟數都排列完才可以 如下陣列 只需要排列一次即可 var arr 2,1,3,4,5,6,7,...
KMP演算法 究極版
翁振宇 字串匹配 kmp演算法 演算法實現一 字串匹配的關鍵在於減少匹配次數。而kmp演算法的核心思想就是匹配陣列,根據匹配陣列的值來排程匹配字串的索引減少多餘的排程。匹配陣列就是字串具有的相同字首 字尾的最大值。比如對於字串 ababacbbb 有 ta baba cbbb 0next 10 01...