生信 序列比較dp 未完成

2022-05-09 05:36:12 字數 1552 閱讀 1731

來自:生物資訊學-陳銘第二版的乙個例題。

題目:

目前的**,執行不正確,關鍵就是不知道怎麼回溯啊,回溯怎麼標記呢?

#include #include

using

namespace

std;

vector

s1,t1;//

在回溯的時候使用

string s,t;//

輸入兩個字串

int dp[30][30

];int maxs(int x,int y,int

z)void dfs(int len1,int

len2)

}if(len2!=0

) }

//列印s1,t1。

for(int i=s1.size()-1;i>=0;i--)

cout

cout

<

;

for(int i=t1.size()-1;i>=0;i--)

cout

cout

<

\n\n";

return

; }

//先求出左上、上、下三者中最大的值

int m=maxs(dp[len1-1][len2-1],dp[len1-1][len2],dp[len1][len2-1

]);

if(dp[len1-1][len2-1]==m)

if(dp[len1-1][len2]==m)

if(dp[len1][len2-1]==m)

}int

main()

//if(i==0||j==0)

if(i==0)

if(j==0

) x=dp[i][j-1]-1;//

在t中插入空格

y=dp[i-1][j-1]+(s[i-1]==t[j-1]?2:-1);//

比較兩者是否相同,相同+2,否則-1

z=dp[i-1][j]-1;//

在s中插入空格

dp[i][j]=maxs(x,y,z);

}//在計算y時,一開始沒有加上三元表示式的括號,導致計算錯誤。

}

//下面是怎麼回溯找到解呢???

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

cout

<

; }

dfs(len1,len2);

return0;

}/**acgctg

catgt

**/

view code

目前的執行結果:

dp矩陣是正確的但是回溯結果不對,還是程式設計能力有限,先思考著,有解了再過來。 

感覺自己那個時候就是個sb,腦子不清醒才學這些,有個p用。。。

生信基礎(二) 生信學習資料

原創 hxj7 上次談到生信人員需要熟練掌握一些程式語言,還講了perl和python的選擇問題。那麼,如果已經選定了一門程式語言,到底該如何學習它呢?今天的我們可以通過mooc跟著名師學習或者上知乎提問,幸運的話還能得到大牛指點。不過,在我剛接觸程式設計的時候,mooc和知乎都還未興起,所以我都是...

常見生信操作

安裝samtools conda install samtools srand 隨機數發生器。設定固定的種子,保證每次出來的結果一致 rand 返回 0,1 之間的隨機數,包含0不包含1 1.產生隨機的基因組檔案 echo 1 awk v seed 1 v label chr v chrnum 4 ...

生信轉崗心得

應健明的邀請,我也寫一篇關於轉行做生物資訊的心得,本來以為很輕鬆就可以寫出來的,但是發現並不那麼好寫。如果放在去年剛轉崗之時,我想應該更順手,那時感觸良多且深刻。不過我雖是個健忘的人,但是還清醒地記得去年7月份通過公司的轉崗答辯之時,心情無比的愉快與美麗,覺得終於從一名生信愛好者成為一名正規軍。之前...