日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【编程之美】3.5 最短摘要的生成

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【编程之美】3.5 最短摘要的生成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:有搜索后的網頁分詞序列 數組W 其中W[0]、W[1]、...W[N]為分好的詞。

用戶輸入的關鍵詞為數組 Q 其中Q[0]、Q[1]...Q[M]為搜索的關鍵詞。

找到W中最小的范圍W[i]~W[j]讓其包括所有的Q。

?

思路:

最想當然的思路就是從W[0]開始,對每個Q遍歷判斷有沒有一樣的,截取出第一個包含Q中元素的W[i]到最后一個包括Q中元素的W[j]。需要O(MN)次比較。

如果前提能夠肯定W中包含所有的Q那就,先從W[0]開始找到第一個包含Q的,再從W[N-1]向前找第一個包含Q的。

?

上面的思路有問題,因為W中可能重復的包含了Q中的元素,我們找最短的是要W[i-j]中沒有重復的Q元素

?

為了去掉重復的數字,就先找到一個全部包含Q的范圍,然后去掉第一個元素,再找包含全部Q的范圍,依次類推。記錄下最短的范圍。就是答案中的解法二。解法二的偽代碼如下:

注意其中對頭和尾分別使用了兩個指針。

int nTargetLen = N + 1; int pBegin = 0; int pEnd = 0; int nLen = N; int nAbstractBegin = 0; int nAbstractEnd = 0;while (true) {while(!isAllExisted() && pEnd < nLen){pEnd++;}while(isAllExisted()){if(pEnd - pBegin < nTargetLen){nTargetLen = pEnd - pBegin;nAbstractBegin = pBegin;nAbstractEnd = pEnd - 1;}pBegin++;}if(pEnd >= N)Break; }

  

自己還想了一種,就是先把W中所有與Q相同的都先記下來位置,然后用圖的方法找經過所有節點的最小路徑。但是由于解法二已經是O(MN)了,用圖的話,光記錄位置就要O(MN)劃不來,就沒做了。

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【编程之美】3.5 最短摘要的生成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。