您的位置:首页 > 其它

uva 1368 DNA Consensus String 字符串

2015-01-31 12:29 357 查看
这学期离散数学的最后一章刚学了类似的东西

什么decoding function和humming distance手算起来才有点难 编程的话就很水了

弱校连萌题目链接:http://acm.bnu.edu.cn/v3/contest_show.php?cid=5772#problem/I

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <vector>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;

const int maxn = 20;

char a[55][1010];
char b[1010];

const char ch[] = {'A', 'C', 'G', 'T'};

int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);

int T;
scanf("%d", &T);

while(T--)
{
int ans = 0;

int m, n;
scanf("%d%d", &m, &n);

for(int i = 0; i < m; i++)
scanf("%s", a[i]);

int cnt[4];

for(int i = 0; i < n; i++)
{
memset(cnt, 0, sizeof(cnt));

for(int j = 0; j < m; j++)
{
int k = 0;
while(ch[k] != a[j][i])
k++;
cnt[k]++;
}

int maxnum = 0;
for(int j = 0; j < 4; j++)
if(cnt[j] > maxnum)
maxnum = cnt[j];

for(int j = 0; j < 4; j++)
{
if(cnt[j] == maxnum)
{
b[i] = ch[j];
ans += m - maxnum;
break;
}
}

}
b
= '\0';

printf("%s\n", b);
printf("%d\n", ans);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: