UVA-1368-DNA Consensus String 基础题 贪心 模拟 详细注释

题意:

1. 给你一堆同长度的DNA链,要你计算他们共识错误(题目里说的什么汉明距离)最少的并且字典序最小的DNA链

2. 没有要求多组数据输入

思路:

1. 首先是对起到桶排序作用的数组a进行清零操作

2. 从左往右计算共识错误最少且字典序最小的DNA(用桶排序和选择法就可以解决字典序的问题)

3. 计算共识错误总和

4. 最后一定要加上字符串结束标记'\0'


我的AC代码如下:


//UVA-1368-DNA Consensus String
#include 
#include 
#include 
using namespace std;

char str[55][1005];
int a[5];
char s[5];

int main()
{
    //freopen("in.txt","r",stdin);
    s[1]='A';
    s[2]='C';
    s[3]='G';
    s[4]='T';
    int t;
    //本题没有要求多组数据输入,我用了while(cin >> t)连wa几次,很气
    cin >> t;
    while(t--)
    {
        int n,m;
        cin >> m >> n;
        for(int i=0; i> str[i];
        int sum=0,mina;
        for(int i=0; imina)
                {
                    mina=a[k];
                    str[m][i]=s[k];
                }
            }
            sum=sum+m-mina;           //计算共识错误总数
        }
        str[m][n]='\0';               //记得加上字符串结束标记

        cout << str[m] << endl;
        cout << sum << endl;
    }
    return 0;
}

你可能感兴趣的:(UVA)