問題 F 基因相似度

2021-10-03 16:36:33 字數 1091 閱讀 2151

眾所周知,自然界的所有生物都有自己的基因序列。但是各個生物之間,或多或少是有一些基因序列是相同的,現在請你來幫幫忙,計算一下兩個生物之間的基因序列相似度。

例如生物a的基因序列為abc ,那麼生物a的基因序列可以拆分成 a , b , c , ab , ac , bc , abc

例如生物b的基因序列為qbc,那麼生物b的基因序列可以拆分成 q , b , c , qb , qc , bc , qbc

那麼這兩種生物共有的最長相似基因序列為bc,bc各佔生物a和b總基因序列的 66.67%

請注意,相似的基因序列必須序列順序也相同,ab與ba不是相似基因序列。

測試樣例由多組測試資料組成。每組測試資料第一行輸入乙個字串s1 ( 1 <= s1.length <= 2000),第二行輸入乙個字串s2 ( 1 <= s.length <= 2000 ) ,分別代表兩個生物的基因序列。基因序列均由小寫字母組成

輸出兩個生物相似的最長基因序列佔自己本身的基因序列的百分比,保留2位小數。

qdwde

qwe60.00% 100.00%

這是乙個dp題(比賽時候還不很熟練就沒有去寫,我太菜了)

現在看看還是挺簡單的 這是一道十分經典求最長公共子串行的題

得出狀態轉移方程

if

(a[i]

==b[j]

)else

然後我們再去除去自身長度*100算出百分比就行了

#include

using namespace std;

int dp[

2005][

2005];

intmain()

else}}

double c=dp[a.

length()

][b.

length()

];printf

("%.2lf%% %.2lf%%\n"

,c/a.

length()

*100

,c/b.

length()

*100);

}return0;

}

3 9 F 基因相似度

眾所周知,自然界的所有生物都有自己的基因序列。但是各個生物之間,或多或少是有一些基因序列是相同的,現在請你來幫幫忙,計算一下兩個生物之間的基因序列相似度。例如生物a的基因序列為abc 那麼生物a的基因序列可以拆分成 a b c ab ac bc abc 例如生物b的基因序列為qbc,那麼生物b的基因...

dp 相似基因

大致思路 dfs也寫了dp也寫了然後發現題讀錯了。所以比賽的時候一定要先把題多讀兩遍每個句子都給它讀懂!這裡兩個字串都可以加入空鹼基!這道題用dp做,難點在 呢?我認為難點在於dp的含義設定 含義中那個 不計算空鹼基 的設定真的是絕了,不然真的,寫不出狀態轉移方程出來的 鬼知道能加多少個空鹼基 這個...

相似度問題 KL散度 軌跡相似度

表示分布之間的 差異 不是 距離 不滿足距離定義的對稱性,不滿足三角不等式。k l a,b kl b,a kl a,b kl b,a kl a,b k l b,a 相對熵公式 dkl p x q x p x lo gp x q x d p x q x sum p x log frac dkl p x...