2序列比对问题
来源:互联网 发布:极光中文安卓编程 编辑:程序博客网 时间:2024/04/30 13:19
str1=abdad
str2=bacd
两字符串进行序列比对,定义一个可以用来衡量比对性能的得分函数
令f(x,y)表示x与y比对的得分。假设x和y都是字符,如果x与y相同,那么f(x,y)=2,如果x与y不同,那么f(x,y)=1,如果x或y是“-”,那么f(x,y)=-1。
str1和str2的2序列比对问题是找到具有最多得分的两序列比对。
状态公式:
A(0,0)=0;
A(i,0)=0;
A(0,j)=0;
A(i,j)=max{
(A(i-1,j)+f(a(i),-)),
(A(i-1,j-1)+f(a(i),b(j))),
(A(i,j-1)+f(-,b(j)))
};
代码如下
//动态规划 #include<iostream> #include<cstring>using namespace std; const int MAX=1000; int maxLen[MAX][MAX]; int main(){ int i,j; string str1,str2; cin>>str1>>str2; memset(maxLen,0,sizeof(maxLen));for(i=0;i<=str1.length();++i){maxLen[0][i]=0-i;} for(i=0;i<=str2.length();++i){maxLen[i][0]=0-i;} for(i=1;i<=str2.length();++i){ for(j=1;j<=str1.length();++j){int temp=max(maxLen[i-1][j]-1,maxLen[i][j-1]-1);int step=0;if(str1[j-1]==str2[i-1])step=2;else step=1;temp=max(temp,maxLen[i-1][j-1]+step);maxLen[i][j]=temp; } } for(i=0;i<=str2.length();++i){for(j=0;j<=str1.length();++j){cout<<maxLen[i][j]<<"\t"; }cout<<endl;}cout<<maxLen[str2.length()][str1.length()]<<endl; return 0; }
//深度搜索遍历 #include<iostream> #include<cstring>using namespace std; string str1,str2;//输入的字符串 int maxResult=0;//最大2序列比对 void dfs(int pos1,int pos2,int score){if(pos1==str1.length()){score-=(str2.length()-pos2);if(score>maxResult)maxResult=score;return ;}if(pos2==str2.length()){score-=(str1.length()-pos1);if(score>maxResult)maxResult=score;return ;}if(str1[pos1]==str2[pos2]){ dfs(pos1+1,pos2+1,score+2);}else{dfs(pos1+1,pos2+1,score+1);}dfs(pos1,pos2+1,score-1);dfs(pos1+1,pos2,score-1);return ;}int main(){ cin>>str1>>str2;dfs(0,0,0);cout<<maxResult<<endl; return 0; }
结果如图:
阅读全文
0 0
- 2序列比对问题
- 序列比对
- 序列比对算法
- 多重序列比对查看
- Android 序列化比对
- 动态编程和基因序列比对
- 生物序列比对与计算智能
- 序列比对:Needleman-Wunsch 算法
- 序列比对那点事儿
- 20160420-序列比对前的准备工作
- MAFFT多重序列比对图解教程
- Muscle 进行多序列比对
- 序列比对算法-计算生物学
- 用动态规划法求解生物信息学中DNA序列比对的问题 (交叉学科应用实验)
- Clustalx 多重序列比对图解教程(By Raindy)
- 生物序列局部比对之Blast算法
- 动态规划 两序列最近距离(字符串比对)
- 序列比对——ClustalX与Muscle
- 修改my-message jquery 消息插件
- 人工智能的发展
- PAT乙级 1016. 部分A+B (15)
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC 博客分类: 跟开涛学SpringMVC webmvcjavaeespring跟开涛学SpringMVC Web MVC简介 1.1、We
- Math对象
- 2序列比对问题
- Numpy-基本操作
- PAT乙级 1017. A除以B (20)
- gopl-Exercise1.7-9: Fetch
- ORACLE批量绑定FORALL与BULK COLLECT
- .NET快速信息化系统开发框架 V3.2->WinForm版本新增新的用户权限设置界面效率更高、更规范
- matplotlib
- 浏览器兼容的JS写法总结
- weblogic内部线程协作