生成最短摘要

2021-06-20 03:08:18 字數 1329 閱讀 1936

**如下:

/*

演算法思想:從頭掃瞄輸入字串,找到第乙個在關鍵字中出現的單詞

記錄其偏移量,繼續往後掃瞄得到出現在關鍵字中的第二個單詞(可以

和第乙個相同),一直到此子串包含所有的關鍵字,此時也需要記錄

其偏移量,計算其大小;接下來繼續從以上子串中的第二個被找到的關鍵字

開始掃瞄.....一直到結束,最後選出距離最小的子串。重要資料結構是:

record 結構

*/ #include #include using namespace std;

const int size = 30;

const int inf = 100000;

struct recordrec[size]; // 記錄獲得的每個摘要的資訊

// 子例程,判斷兩個單詞是否相同

bool isequal(char* f, char* s)

if(*f == '\0' && *s == '\0')

return true;

else

return false;

}// 子例程,檢查查詢到了多少個關鍵字

int check(int* trace, int len)

return count;

}// cont: 字串內容

// key: 關鍵字陣列

// len: 關鍵字個數

void summary(char* cont, char* key, int len);

int i = 0, t = 0, count = 0, k;

bool flag = false;

while(true)

for(int j = 0; j < len; j++)

if(count == 2)

if(check(trace, len) == len)}}

if(*(cont+i) == '\0')

break;

// 跳過空格

++i;

} else

} int min = inf;

int indx;

for(i = 0; i < t; i++)

} for(i = rec[indx].begin; i <= rec[indx].begin +rec[indx].dis; i++)

cout << endl;

}int main(int argc, char* argv)

; summary(cont, key, 3);

return 0;

}

最短摘要生成

問題定義 給定乙個字串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 給出了一種比較好的解法,策略還是使用雙指標,雙指標對於很多演算法設計很有價值,演算法的思想是採用兩個指標,開始兩個指標都...