您的位置:首页 > 其它

uva 1368 DNA序列

2015-08-09 13:46 441 查看
这是道水题

%s 输出是从第一个位置开始读, 遇'0'结束!

所以在存str 是 j-1 , 而不是j

#include<stdio.h>

#include<string.h>

int main(){



int n, m, t;

char maps[55][1005];

char str[1005], ch[5] = { '0', 'A', 'C', 'G', 'T'};

int num[6], k, max, coun;



while(scanf("%d",&t) != EOF){

while(t--){



scanf("%d%d",&n, &m);



memset(str,'\0',sizeof(str));





for(int i = 1; i <= n; i++){

scanf("%s",&maps[i][1]);

}



coun = 0;



for(int j = 1; j <= m; j++){ // 按列查找



memset(num,0,sizeof(num));

// 记录每个字母出现次数

for(int i = 1; i <= n; i++){

if(maps[i][j] == 'A') num[1]++;

else if(maps[i][j] == 'C') num[2]++;

else if(maps[i][j] == 'G') num[3]++;

else if(maps[i][j] == 'T') num[4]++;

}



max = 0; k = 0;

//记录出现次数最多的字母(即是按字典序列)

for(int i = 1; i <= 4; i ++)

if(max < num[i]) {

max = num[i];

k = i;

}



str[j-1] = ch[k];



for(int i = 1; i <= n; i++){

if(str[j-1] != maps[i][j]) coun++;

}





}



printf("%s\n",str);



printf("%d\n",coun);



}

}



return 0;

}

Sample Input

3 
5 8 
TATGATAC 
TAAGCTAC 
AAAGATCC 
TGAGATAC 
TAAGATGT 
4 10 
ACGTACGTAC 
CCGTACGTAG 
GCGTACGTAT 
TCGTACGTAA 
6 10 
ATGTTACCAT 
AAGTTACGAT 
AACAAAGCAA 
AAGTTACCTT 
AAGTTACCAA 
TACTTACCAA

Sample Output

TAAGATAC 
7 
ACGTACGTAA 
6 
AAGTTACCAA 
12
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: