最長公共子串行之反恐狙擊

2021-10-23 01:26:18 字數 1909 閱讀 7411

當今國際反恐形勢很嚴峻,特別是美國「9.11事件」以後,國際恐怖勢力更是有恃無恐,製造了多起駭人聽聞的恐怖事件。基於此,各國都十分擔心恐怖勢力會對本國社會造成的不穩定,於是紛紛在本國的軍隊、警察隊伍中開展了反恐訓練。作為反恐立場堅定的大國,中國也十分重視在人民解放軍、武裝警察部隊、人民警察隊伍中反恐訓練,還專門成立了反恐特警隊。

煒煒是反恐特警隊的一名新隊員,現在正在接受培訓。這幾天剛好是射擊訓練第二階段——實彈應變訓練的日子,此前的第一階段裡,煒煒經過努力,已經將自己訓練成為乙個百發百中的神搶手了!這次,他將揹著國產最新型12.7mm重型狙擊槍進行訓練比賽。

這次訓練比賽的規則是這樣的:

1、每個隊員從出發點開始,沿著一條唯一的筆直道路跑直到終點,途中不允許往回跑,否則將被取消比賽資格。

2、出發前,每個隊員的槍膛內都被裝了順序一樣的、用小寫英文本母標明型別的子彈序列,每位隊員被告知這一串行的資訊;同時,每位隊員也被告知****即將出現的序列和型別(同樣用小寫英文本母標明型別)。

3、在跑動的過程中,若發現「****」,特警隊員可以選擇用**斃他,來得到寫在「****」胸前的得分,但是前提是他使用的子彈型別必須和「****」型別相同,否則,即使擊斃了「****」,也得不到分數;當然選擇不擊斃他也是可以的,這樣他不會從那個「****」身上得到分數。

4、允許特警隊員放空槍,這樣可以消耗掉型號不對的子彈而不至於殺死「****」(當然每個特警隊員都不會愚蠢到不***裝置就放空槍,以至於嚇跑「****」),等待槍口出現正確型號的子彈擊斃他得分。

這裡,我們假定:

1、對於每個隊員,途**現****的地點、時間、型別也是完全一樣的。

2、每顆子彈都是質量合格的,都可以發揮殺傷效力

3、由於隊員各個都是神槍手,一旦他選擇了正確的子彈,向目標射擊,目標100%被爆頭

4、每個隊員的記憶力超強,能記住所有子彈序列資訊和****序列資訊。

5、每個隊員體力足夠好,能跑完全程,並做他想要做的

6、「****」是不動的,小範圍內不存在多於乙個的****;

煒煒需要你的幫助,告訴他如何做,才能得到最高的分數。現在如果告訴你出發時槍膛內子彈的序號和型號、****出現的序號和型別,你能告訴煒煒他最多能得到多少分數嗎?

input

輸入資料的第一行有乙個整數n表示子彈和****的型別數。隨後的一行是各種****型別的一行字母,兩個字母之間沒有任何字元。接下來的一行是擊斃上一行對應位置****型別的得分數,每個分數之間恰有乙個空格。第三第四行分別表示開始時槍膛內子彈的序列(左邊的先打出)和****出現的序列(左邊的先出現),字母之間都沒有任何字元。

每個測試資料之間沒有空格和空行。你的程式必須通過全部測試資料,才能被判為ac。

output

對於每乙個測試資料,輸出煒煒最多能得到的分數。

sample input

3abc

1 1 1

abcccc

3abc

1 1 1

cccaba

sample output10

這道題開始猶豫要不要做,因為題目實在太長了。但其實讀下來發現比英文的好理解多了。

感覺這題到最後就是求最長公眾子串行,但是還外加考慮得分,所以可以將字元長度加1換成加分數

​#include#include#include#define mxn 2001

using namespace std;

int dp[mxn][mxn];

int main()

cin>>a>>b;

int len1=strlen(a);

int len2=strlen(b);

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

dp[i][0] = 0;

for ( j = 0; j <= len2; j++)

dp[0][j] = 0;

for(i=1;i<=len1;i++)

}cout<

最長公共子串行 最長公共子串

1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...

最長公共子串行 最長公共子串

1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...

最長公共子串 最長公共子串行

子串要求連續 子串行不要求連續 之前的做法是dp求子序列 include include include using namespace std const int inf 0x3f3f3f3f const int mod 1000000007 string s1,s2 int dp 1010 10...