• UVa1368


    //UVa1368 - DNA Consensus String
    //题目:给m个长度为n的DNA序列,求一个DNA序列到所有序列的总Hamming距离最小,Hamming距离为不同字符的位置的个数。
    //分析:每列找出最多重复次数。
    
    #defien A1 //1,only DNA
    #defien A2 //2,已AC
    
    #ifdef A1
    #include<stdio.h>
    #include<string.h>
    int main(){
    	int T;
    	scanf("%d",&T);
    	while(T--){
    	//输入
    		int m, n;
    		scanf("%d %d",&m,&n);//m个n长度的
    	//存储
    		int s[n][4];
    		memset(s,0,sizeof(s));
    		char f[4]={'A','C','G','T'};
    	//找个数
    		for(int i = 0; i <= m; i++){//rows
    			int g,count = 0;
    			char ch;
    			//while((ch=getchar()) != '
    '){
    			while(scanf("%c",&ch) == 1){//every row
    				//getchar();
    				if(ch=='
    ')break;
    				if(ch=='A')g=0;
    				if(ch=='C')g=1;	
    				if(ch=='G')g=2;
    				if(ch=='T')g=3;
    				s[count][g] += 1;	
    				count++;
    			}
    		}
    		//printf("%d %d %d %d %d
    ",s[1][0],s[1][1],s[1][2],s[1][3],s[0][0]);	
    	//输出
    		for(int j = 0; j < n; j++){
    			int max = 0, T = 4;
    			//int *pt;
    			while(T){
    				//pt = &s[j][T];
    				if(((s[j][T-1]) > (s[j][max])))max = T-1;
    				T--;
    			}
    			//printf("%d
    ",s[j][T-1]);
    			printf("%c",f[max]);
    		}
    		putchar('
    ');
    	}
    	return 0;
    }
    #endif
    
    #ifdef A2
    #include<stdio.h>
    #include<string.h>
    int main(void){
        int t;
    	scanf("%d",&t);
    	while(t--){
    		int n,m;
    		scanf("%d %d",&n,&m);
    		char DNA[n][m+1];
    		for(int i=0;i<n;i++) scanf("%s",DNA[i]);
    		int list[4];
    		int num=0,num1;
    		for(int i=0;i<m;i++){
    			memset(list,0,sizeof(list));
    			for(int j=0;j<n;j++){
    				if(DNA[j][i]=='A') list[0]++;
    				else if(DNA[j][i]=='C') list[1]++;
    				else if(DNA[j][i]=='G') list[2]++;
    				else list[3]++;
    			}
    			int temp=0,ans;
    			for(int k=0;k<4;k++){
    				if(list[k]>temp) {
    				ans=k;
    				temp=list[k];
    				num1=n-list[k];
    			    }
    			}
    			if(ans==0) printf("A");
    			else if(ans==1) printf("C");
    			else if(ans==2) printf("G");
    			else printf("T");
    			num+=num1;
    		}
    		printf("
    %d
    ",num);
    	}    
        return 0;
    }
    #endif
    
    
    

  • 相关阅读:
    保护ASP.NET 应用免受 CSRF 攻击
    在html页头设置不缓存
    ASP.NET MVC – 关于Action返回结果类型的事儿(上)
    UC浏览器 分享到朋友圈和微信好友
    利用java Base64 实现加密、解密
    Java图片工具类,完成图片的截取和任意缩放
    iscroll动态加载数据完美解决方案
    ASP.NET三层架构的分析
    如何用浏览器调试js代码
    练习使用jquery.并将验证强度的功能加到注册页面中
  • 原文地址:https://www.cnblogs.com/gwj1314/p/9444953.html
Copyright © 2020-2023  润新知