题意:懒得写了 想看的话可以找紫书58页习题3-7 或者 参考别人的博客(刚开始还以为是在给定的DNA中选出一个,但看样例怎么也不懂,再看时才发现是构造一个新的DNA序列
这也没什么好讲的 认真读题然后注意一下小细节(已用//注释出来
AC代码:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int m, n, t, maxn, sum;
int a[5];
char ch;
char s[51][1001];
int main()
{
while(~scanf("%d",&t))
{
while(t--)
{
scanf("%d%d",&m,&n);
for(int i = 0; i < m; ++i)
scanf("%s",s[i]);
sum = 0;
for(int j = 0; j < n; ++j)
{
maxn = 0;
memset(a,0,sizeof(a));
for(int i = 0; i < m; ++i)
{
if(s[i][j] == 'A')
{
a[1]++;
if(maxn <= a[1]) //这里
{
maxn = a[1];
ch = 'A';
}
}
else if(s[i][j] == 'C')
{
a[2]++;
if(maxn < a[2] || (maxn == a[2] && (ch == 'G' || ch == 'T'))) //这里
{
maxn = a[2];
ch = 'C';
}
}
else if(s[i][j] == 'G')
{
a[3]++;
if(maxn < a[3]|| (maxn == a[3] && ch == 'T')) //还有这里
{
maxn = a[3];
ch = 'G';
}
}
else if(s[i][j] == 'T')
{
a[4]++;
if(maxn < a[4])
{
maxn = a[4];
ch = 'T';
}
}
}
cout << ch;
sum += maxn;
}
cout << endl;
cout << (n * m - sum) << endl;
}
}
return 0;
}
就是为了练练字符串的题目 结果发现自己很差劲..继续努力吧..