來自:生物資訊學-陳銘第二版的乙個例題。
題目:
目前的**,執行不正確,關鍵就是不知道怎麼回溯啊,回溯怎麼標記呢?
#include #includeview codeusing
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
**/
目前的執行結果:
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月份通過公司的轉崗答辯之時,心情無比的愉快與美麗,覺得終於從一名生信愛好者成為一名正規軍。之前...