hdu 1080 打表+dp(最长公共子序列)
来源:互联网 发布:mac怎么关闭后台程序 编辑:程序博客网 时间:2024/04/29 05:06
先把题中给的表格打出来,然后dp
dp[i][j] = max ( dp[i-1][j-1]+a[s1[i]][s2[j]] , dp[i-1][j] + a[s1[i][' '] , dp[i][j-1] + a[' '][s2[j]] )
dp[i][j]代表两个序列当前匹配到几位,如果匹配的话转移如上第一种,如果不匹配有两种情况如上后两种情况,匹配空格
比较恶心的是打表打错了,搞了好久,,醉了....................................
弱啊
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#define MAX 107using namespace std;int t,n,m;int dp[MAX][MAX];int a[MAX][MAX];char s1[MAX];char s2[MAX];int main ( ){ scanf ( "%d" , &t ); a['A'-64]['A'-64]=a['C'-64]['C'-64]=a['G'-64]['G'-64]=a['T'-64]['T'-64]=5; a['A'-64]['C'-64]=a['C'-64]['A'-64]=a['A'-64]['T'-64]=a['T'-64]['A'-64]=-1; a['A'-64]['G'-64]=a['G'-64]['A'-64]=a['G'-64]['T'-64]=a['T'-64]['G'-64]=-2; a['C'-64]['G'-64]=a['G'-64]['C'-64]=-3; a['C'-64]['T'-64]=a['T'-64]['C'-64]=-2; a[0]['A'-64]=a['A'-64][0] = -3; a[0]['C'-64]=a['C'-64][0] = -4; a[0]['G'-64]=a['G'-64][0] = -2; a[0]['T'-64]=a['T'-64][0] = -1; while ( t-- ) { scanf ( "%d" , &n ); scanf ( "%s" , s1+1 ); scanf ( "%d" , &m ); scanf ( "%s" , s2+1 ); memset ( dp , -0x3f , sizeof ( dp ) ); dp[0][0] = 0; for ( int i = 1 ; i <= n ; i++ ) dp[i][0] = dp[i-1][0] + a[s1[i]-64][0]; for ( int i = 1 ; i <= m ; i++ ) dp[0][i] = dp[0][i-1] + a[0][s2[i]-64]; for ( int i = 1 ; i <= n ; i++ ) for ( int j = 1 ; j <= m ; j++ ) { dp[i][j] = max ( dp[i][j] , dp[i-1][j] + a[s1[i]-64][0] ); dp[i][j] = max ( dp[i][j] , dp[i][j-1] + a[0][s2[j]-64] ); dp[i][j] = max ( dp[i][j] , dp[i-1][j-1] + a[s1[i]-64][s2[j]-64] ); } printf ( "%d\n" , dp[n][m] ); }}
0 0
- hdu 1080 打表+dp(最长公共子序列)
- hdu 1080 (DP LCS最长公共子序列)
- hdu 1080 Human Gene Functions (DP + 最长公共子序列)
- HDU 1080 Human Gene Functions (DP,最长公共子序列)
- HDU 1159 Common Subsequence--DP--(最长公共子序列)
- !HDU 1513 Palindrome--dp--(最长公共子序列模型)
- HDU 1159 Common Subsequence(DP最长公共子序列)
- HDU 1159 Common Subsequence(最长公共子序列)dp
- 【HDU】1159 Common Subsequence(DP、最长公共子序列)
- 最长公共子序列 最长递增子序列(和) 最长递增公共子序列 最长(连续)子序列乘积(HDU)--dp
- HDU 1080 Human Gene Functions--DP--(最长公共子序列变形)
- hdu 1503 + 简单dp ( 最长公共子序列型)+记忆化搜索+stl
- 最长公共子序列(DP)
- 最长公共上升子序列 (dp)
- poj1458(最长公共子序列dp)
- 最长公共子序列(LCS DP)
- 最长公共子序列(dp)
- nyoj 最长公共子序列(DP)
- Android 下移植WIFI 驱动
- OpenCV学习篇之三 摄像头控制
- ios_01-----IBAction和IBOutlet
- android Launcher study 之一
- OC 类设置及NSArray自定义排序
- hdu 1080 打表+dp(最长公共子序列)
- 沙滩上晒太阳就对他说你怎么不出海去
- 利用service 监听电话
- android studio开发教程 ListActivity的2种使用方法:系统默认布局和自己定义布局
- Significance Testing (t-tests)
- BZOJ1050 [HAOI2006]旅行comf(Kruskal算法)
- Cocos2d-x游戏开发《赵云要格斗》 (二) cocos2dx3.3 - _ - ||貌似偷懒了
- Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds...
- UIView和UIWindow