最短摘要的生成

2021-06-28 03:43:03 字數 983 閱讀 7028

《程式設計之美》第3.5節:最短摘要的生成

解法:遍歷一遍輸入序列t,將t中與s字元相同的字元的下標放入陣列中,然後從這個陣列中不斷讀出單詞,放入集合ses中,當ses的大小等於s.size()時,說明已經找到乙個短的摘要了,更新length。如果已經遍歷了length個單詞,讓然沒有找到,就放棄當前遍歷,因為即使後面找到了,長度也不可能比length小了。

**:#include#include#include#include#includeusing namespace std;

//返回最短摘要[begin,end)注意是左閉右開的區間

pairgenerateabstract(vector&t,vector&s)

} }return pair(begin,end);

}int main()

{ vectort;

vectors;

freopen("input.txt","r",stdin);

string inputstring;

while(cin>>inputstring)

t.push_back(inputstring);

cin.clear();

freopen("inputs.txt","r",stdin);

while(cin>>inputstring)

s.push_back(inputstring);

fclose(stdin);

freopen("con", "r", stdin);

coutfor(int i=result.first;i

微軟 亞洲 研究院 成立 於 1998 年 , 我們 的 使命 是 使 未來 的 計算機 能夠 看 、 聽 、 學 , 能 用 自然語言 與 人類 進行 交流 

。 在 此 基礎 上 , 微軟 亞洲 研究院 還 將 促進 計算機 在 亞太 地區 的 普及 , 改善 亞太 使用者 的 計算 體驗

inputs.txt:

微軟 亞洲 研究院 使命

最短摘要生成

問題定義 給定乙個字串str,以及乙個關鍵字字串陣列key,求str中包含key中所有字串的最短子串。基本方法 雙指標掃瞄字串 詳細演算法 1.使用start和end兩個整數來指示掃瞄位置。均初始化為0。2.對end加1,直到str start,end 中包含所有關鍵字,或者end strlen s...

最短摘要生成

題目 抽象點說,就是在乙個字串中,找一些目標字串,找到包含所有目標字串的最小字串。題目雖然叫做最短摘要生成,但和實際的搜尋snippet的計算還是有比較大的差距的。先來看看這些序列 w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1 w0,w1,w2,w3,q0,w4...

最短摘要生成

題目 抽象點說,就是在乙個字串中,找一些目標字串,找到包含所有目標字串的最小字串。題目雖然叫做最短摘要生成,但和實際的搜尋snippet的計算還是有比較大的差距的。解法 文獻 1 給出了一種比較好的解法,策略還是使用雙指標,雙指標對於很多演算法設計很有價值,演算法的思想是採用兩個指標,開始兩個指標都...