zoukankan      html  css  js  c++  java
  • UVa-1368-DNA序列

    这题的话,我们每次统计的话,是以列为外层循环,以行为内层循环,逐一按列进行比较。
    统计完了之后,题目中要求说到要hamming值最小的,那我们就选用该列最多的字母就可以了,如果有数目相等的字母,那就按照字典序,选用字典序小的。
    所以我们可以一层循环,挑选倒着挑选最大的值,如果大于等于就修改值,因为我的比较数组里是按照ACGT排列的,所以这样一举两得。

    #include <stdio.h>
    #include <string.h>
    int T,m,n;
    char s[55][1010];
    char nul[4]={'A','C','G','T'},str[1010];									
    int cmp[5],ham;
    																										
    int main()
    {	
    	scanf("%d",&T);
    	while (T--) {
    		ham=0;
    		scanf("%d%d",&m,&n);
    		for (int i=0;i<m;i++) {
    			scanf("%s",s[i]);
    		}
    		for (int i=0;i<n;i++) {
    			memset(cmp,0,sizeof(cmp));
    			for (int j=0;j<m;j++) {
    				for (int k=0;k<4;k++) {
    					if (nul[k]==s[j][i]) {
    						cmp[k]+=1;
    						continue;
    					}
    				}
    			}
    			int max=0,pos;
    			for (int p=3;p>=0;p--) {
    				if (cmp[p]>=max) {
    					max=cmp[p];
    					pos=p;
    				}
    			}
    			ham+=m-max;
    			str[i]=nul[pos];
    		}
    		for (int i=0;i<n;i++) printf("%c",str[i]);
    		printf("
    %d
    ",ham);
    	}
    	return 0;
    }
    
  • 相关阅读:
    Daily Scrum NO.4
    Daily Scrum NO.3
    Daily Scrum NO.2
    Daily Scrum NO.1
    Beta任务项录入
    M1事后分析报告
    wenbao与概率
    wenbao与组合数
    wenbao与高斯消元
    wenbao与链表
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/10350144.html
Copyright © 2011-2022 走看看