poj 1080 Human Gene Functions
2015-09-08 23:34
627 查看
针对三种情况进行最大值的求解,规模为100,只有使用动态规划。
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <map> #include <queue> #include <ctime> #define pb push_back #define ll long long #define mp make_pair #define f first #define s second #define pii pair < int, int > #define ull unsigned long long #define pll pair < ll, ll > #define forit(s) for(__typeof(s.begin()) it = s.begin(); it != s.end(); it ++) #define all(s) s.begin(), s.end() const int inf = (1ll << 31) - 1; const int maxn = (int) 1e5 + 10; #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) using namespace std; int matrix[5][5] = {{-19931117, -3, -4, -2, -1}, {-3, 5, -1, -2, -1}, {-4, -1, 5, -3, -2}, {-2, -2, -3, 5, -2}, {-1, -1, -2, -2, 5}}; int dp[110][110]; char s1[110], s2[110]; int T = 0, len1 = 0, len2 = 0; int change(char a) { if (a == 'A') { return 1; }else if (a == 'C') { return 2; }else if (a == 'G') { return 3; }else if (a == 'T') { return 4; }else { return 0; } } int comp(char a, char b) { int r = 0; int c = 0; r = change(a); c = change(b); return matrix[r][c]; } int main() { //freopen("data_1080.txt", "r", stdin); while(scanf("%d", &T) != EOF) { for (int t = 0; t < T; t++) { memset(dp, 0, sizeof(dp)); scanf("%d%s", &len1, s1); scanf("%d%s", &len2, s2); dp[0][0] = 0; char *s11, *s22; s11= s1 - 1; s22 = s2 - 1; for (int i = 1; i <= len1; i++) { dp[i][0] = dp[i - 1][0] + comp(s11[i], 0); } for (int i = 1; i <= len2; i++) { dp[0][i] = dp[0][i - 1] + comp(s22[i], 0); } for (int i = 1; i <= len1; i++) { for (int j = 1; j <= len2; j++) { dp[i][j] = dp[i][j - 1] + comp(s22[j], 0); dp[i][j] = max(dp[i][j], dp[i-1][j] + comp(s11[i], 0)); dp[i][j] = max(dp[i][j], dp[i-1][j-1] + comp(s11[i], s22[j])); } } printf("%d\n", dp[len1][len2]); } } return 0; }
相关文章推荐
- 在Python中建立N维数组并赋初值
- Assembly.Load,系统找不到指定的文件
- iOS分页控制器
- iOS-QQ好友列表实现
- 关于 const char* p , char const* p 以及 char * const p
- PS简介
- 什么迷茫不迷茫?不过是才华配不上梦想
- 用“MEAN”技术栈开发web应用(一)AngularJs前端架构
- 布局文件中的某个标签引起的问题
- HashSet集合存储自定义对象细节
- 中文分词
- 用“MEAN”技术栈开发web应用(一)AngularJs前端架构
- uva12186 Another Crisis
- C++ 奇葩的空语句
- 關於時間的考慮
- 某银行网银代发工资无法操作问题解决
- 学习《算法导论》第十一章 散列表 总结二
- hdoj 4786 Fibonacci Tree 【最小生成树&&最大生成树】
- 上下文(context)ActionContext介绍(在Struts2中)
- 栈