動態規劃 基因序列相似性問題

2021-09-11 02:47:08 字數 1540 閱讀 8316

基因序列相似性問題

time limit:5s

memory limit:32m

accepted submit:47

total submit:451

genotype 是乙個有限的基因序列集。它的每個成員都是由大寫的英文本母a-z組成,不同的字母表示不同種類的基因。乙個基因種類可以分化成為若干新的基因種類。這種 分化一般呈樹狀結構。樹根處的基因序列稱為母序列。基因序列中含有母序列的基因子串行稱為本質基因子串行。生物資訊學家們在研究genotype 基因序列時,需要研究同一種類基因序列的相似性。對於同一種類的2個基因序列x和y,已知它們的母序列p,基因序列x和y的最長公共本質基因子串行給出其 相似性的準確刻畫。為了有效地分析基因序列的相似性,科學家們希望設計出乙個高效的計算程式,能對給定的基因序列x,y和它們的母序列p,快速計算出基因 序列x和y的最長公共本質基因子串行的長度。

程式設計任務: 

給定基因序列x,y和母序列p,計算出基因序列x和y的最長公共本質基因子串行的長度。 

資料輸入:

輸入資料的前3行中每行有乙個正整數,分別表示序列x,y和p的長度m,n和r(1≤m,n,r≤1000)。 接下來的3行給出序列x,y和p。 

結果輸出:

在螢幕上輸出基因序列x和y的最長公共本質基因子串行的長度。如果基因序列x和y沒有以p為母序列的公共本質基因子串行,則輸出0。

輸入示例

331

abcbca

a

輸出示例

1
#include #include #include #define max_val(x, y) (((x) > (y)) ? (x) : (y))

#define min_val(x, y) (((x) < (y)) ? (x) : (y))

int lgen1, lgen2, lgenc;

char gen1[1010];

char gen2[1010];

char genc[1010];

int lca[2][1010][1010];

int main()

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

}flag = 1;

a = b = 1;

for (k = 1; k <= lgenc && flag; ++k)

for (i = a; i <= lgen1; ++i)

else}}

else if (gen1[i] == gen2[j])

else}}

point = 1 - point;

a = ta;

b = tb;

}printf("%d\n", lca[point][lgen1][lgen2] < 0 ? 0 : lca[point][lgen1][lgen2]);

}return 0;

}

POJ 1080 基因序列相似度計算 動態規劃

本題為典型的動態規劃,關鍵找出序列比對的3個不同情況,即子問題 設d i j 為取s1第i個字元,s2第j個字元時的最大分值 則決定p為最優的情況有三種 p陣列為分數矩陣 1 s1取第i個字母,s2取 d i 1 j p s1 i 1 2 s1取 s2取第j個字母 d i j 1 p s2 j 1 ...

動態規劃 單調子串行相關

我們要區分一下子序列和子串。簡單的來講就是子串行是可以不連續但必須保證與給定的原陣列相同的順序,子串就是必須連續並且保證與給定的原陣列順序相同。我們討論的主要是子串行。ac code include include include include using namespace std const ...

文字相似性問題個人見解

jaccard 這時,就涉及到,相似的閾值,以及重複的閾值了,就是min threshold與max threshold了,當jaccard min threshold時,表示文章a b相似,而jaccard max threshold時,則表示a b過於相似,可認為文章重複,具體引數可根據資料集的...