UVA - 1368 - DNA Consensus String
2018-02-05 20:26
351 查看
原命题链接:PDF/Vjudge
题意就是说,在输入的已知的m行的DNA中,依次找出每一位出现最多的字母,并且把每一位上与这个字母不同的字母个数记录下来,输出总的相异个数,若有多个符合条件的,输出字典序小的(从前往后扫描即可)。
这个如果有多个符合条件的的话,那么就选用当前来看字典序小的一个,这样一来,到最后保存的整个字符串一定是最小的。
代码如下:
#include <bits/stdc++.h>
using namespace std;
string dna[100];
int main()
{
int num;
cin >> num;
while (num--)
{
int m, n;
cin >> m >> n;
for (int i = 0; i < m; i++)
{
cin >> dna[i];
}
char ans[9000] = "";
sort(dna, dna + m);//貌似没什么用。。。可以删了。
int now = 0, sum = 0;
for (int i = 0; i < n; i++)
{
int a[100] = { 0 }, maxn = 0;
for (int j = 0; j < m; j++)
{
a[dna[j][i] - 'A']++;
maxn = max(maxn, a[dna[j][i] - 'A']);
}
//cout << maxn << " ";
for (int k = 0; k < 100; k++)
{
if (maxn == a[k])
{
maxn = k;
break;
}
}
//cout << maxn << endl;
ans[now++] = maxn + 'A';
for (int j = 0; j < m; j++)
{
if (ans[now - 1] != dna[j][i])
sum++;
}
}
ans[now] = 0;
cout << ans << endl << sum << endl;
}
//system("pause");
return 0;
}
题意就是说,在输入的已知的m行的DNA中,依次找出每一位出现最多的字母,并且把每一位上与这个字母不同的字母个数记录下来,输出总的相异个数,若有多个符合条件的,输出字典序小的(从前往后扫描即可)。
这个如果有多个符合条件的的话,那么就选用当前来看字典序小的一个,这样一来,到最后保存的整个字符串一定是最小的。
代码如下:
#include <bits/stdc++.h>
using namespace std;
string dna[100];
int main()
{
int num;
cin >> num;
while (num--)
{
int m, n;
cin >> m >> n;
for (int i = 0; i < m; i++)
{
cin >> dna[i];
}
char ans[9000] = "";
sort(dna, dna + m);//貌似没什么用。。。可以删了。
int now = 0, sum = 0;
for (int i = 0; i < n; i++)
{
int a[100] = { 0 }, maxn = 0;
for (int j = 0; j < m; j++)
{
a[dna[j][i] - 'A']++;
maxn = max(maxn, a[dna[j][i] - 'A']);
}
//cout << maxn << " ";
for (int k = 0; k < 100; k++)
{
if (maxn == a[k])
{
maxn = k;
break;
}
}
//cout << maxn << endl;
ans[now++] = maxn + 'A';
for (int j = 0; j < m; j++)
{
if (ans[now - 1] != dna[j][i])
sum++;
}
}
ans[now] = 0;
cout << ans << endl << sum << endl;
}
//system("pause");
return 0;
}
相关文章推荐
- UVA-1368-DNA Consensus String 基础题 贪心 模拟 详细注释
- DNA序列(DNA Consensus String, UVa 1368)算法
- DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368)
- 3-7 uva 1368 - DNA Consensus String
- uva 1368 - DNA Consensus String(字符串处理)
- UVA 1368 - DNA Consensus String
- UVA 1368 - DNA Consensus String
- DNA序列 (DNA Consensus String, ACM/ICPC Seoul 2006 UVa1368)
- UVA - 1368 DNA Consensus String
- Uva.1368 DNA Consensus String
- UVa1368 DNA Consensus String
- UVa 1368 DNA Consensus String(贪心+计数)
- 算法竞赛入门经典第三章3-7 DNA Consensus String UVA - 1368
- UVA - 1368 DNA Consensus String
- UVa 1368 - DNA Consensus String
- UVa1368 DNA Consensus String
- uva 1368 DNA Consensus String 字符串
- DNA Consensus String UVA - 1368
- UVA - 1368 DNA Consensus String
- UVA 1368 DNA Consensus String(水题)