poj 1080 最长公共子串变形
来源:互联网 发布:上虞区干部网络教育 编辑:程序博客网 时间:2024/06/13 06:06
给出两个串,根据给出的字符之间的相似度 求 最大相似度。。
很明显的 LCS变形,只要注意下 初始条件就可以了
#include<stdio.h>#include<string.h>#define max(a,b,c) ((a)>(b)?(a)>(c)?(a):(c):(b)>(c)?(b):(c))const int maxn=105;char s[maxn],t[maxn];int dp[maxn][maxn];int slen,tlen;char map[]={'A','C','G','T'};int table[5][5]={{5,-1,-2,-1,-3},{-1,5,-3,-2,-4},{-2,-3,5,-2,-2},{-1,-2,-2,5,-1},{-3,-4,-2,-1,0}};int getid(char c){for(int i=0;i<4;i++)if(map[i]==c)return i;return 0;}int main(){int n;scanf("%d",&n);while(n--){scanf("%d%s",&slen,s);scanf("%d%s",&tlen,t);int ids,idt;dp[0][0]=0;for(int i=0;i<slen;i++){ids=getid(s[i]);dp[i+1][0]=dp[i][0]+table[ids][4];for(int j=0;j<tlen;j++){idt=getid(t[j]);dp[0][j+1]=dp[0][j]+table[4][idt];int a=dp[i+1][j]+table[4][idt];int b=dp[i][j+1]+table[ids][4];int c=dp[i][j]+table[ids][idt];dp[i+1][j+1]=max(a,b,c);}}printf("%d\n",dp[slen][tlen]);}}
- poj 1080 最长公共子串变形
- poj 3356 最长公共子串变形
- HDU 1080 最长公共子序列变形
- poj 2250 Compromise 【最长公共子序列变形】
- 【poj 1692】Crossed Matchings (最长公共子序列变形)
- Compromise(最长公共子串变形,打印路径)
- 最长上升子序列 最长公共子序列 最长公共子串 数字三角形 等简单DP以及变形
- POJ 1080(最长公共子序列)
- poj 1159 Palindrome--最长公共子串
- POJ 3080(最长公共子串)
- poj 2774 最长公共子串
- poj 1159 Palindrome(最长公共子串)
- POJ 2774 最长公共子串
- poj 1159 最长公共子串LCS
- poj 2774 最长公共子串
- 最长公共子串-poj-2274-undone
- poj 1458 最长公共子串
- [POJ 2774] 最长公共子串
- 一名大学毕业生的反思
- POJ 2074 Line of Sight(判线段与直线相交)
- 文件传输协议(File Transfer Protocol, FTP)(2)
- Ubuntu OS xen虚拟机上测试lvs和keepalived负载均衡
- 我的大学我做主
- poj 1080 最长公共子串变形
- .ftp
- Android利用ViewFlipper实现屏幕切换动画效果
- 武大校长的一封信
- 关于static函数的用法和全局变量在工程中的引用
- crypt的使用
- 链接putty的心得
- Android ViewFlipper 手势触摸案例
- 安装vmware的心得