算法竞赛入门经典(第二版)3-7DNA序列UVA1368
作者:互联网
一开始题意理解错了,做了很久,有点费劲
https://vjudge.net/problem/UVA-1368
#include<stdio.h> #include<string.h> int main() { int t; scanf("%d",&t); while(t--) { int m,n,sum=0; scanf("%d%d",&m,&n); while(m<4||m>50||n<4||n>1000) { printf("input again\n"); scanf("%d%d",&m,&n); } char a[m][n];//二维数组保存输入的DNA序列 for(int x=0;x<m;x++) { scanf("%s",a[x]);//gets(a[i]);不行 第一行数组获取不到 } printf("最优解为\n"); for(int i=0;i<n;i++)//先循环列 { int b[4]={0}; for(int j=0;j<m;j++) { //printf("%c\n",a[j][i]); switch(char(a[j][i])) { case 'A': {b[0]++;//printf("----%d\n",b[0]); break; } case 'C': {b[1]++;//printf("----%d\n",b[1]); break; } case 'G':{b[2]++;//printf("----%d\n",b[2]); break; } case 'T':{b[3]++;//printf("----%d\n",b[3]); break; } } } // for(int Y=0;Y<4;Y++) // { printf("[%d]=%d",Y,b[Y]); }//测试是数组赋值是否正确 int max=b[0],k,flag=0; for(k=1;k<4;k++) { if(b[k]>max) { max=b[k]; flag=k; } } // printf("max=b[%d]=%d",flag,max);//测试是否正确取到最大值 switch(flag) { case 0 :{printf("A"); break; } case 1 :{printf("C"); break; } case 2 :{printf("G"); break; } case 3 :{printf("T"); break; } } sum+=m-max; } printf("\nMin=%d\n\n",sum); } } /* while(1) { int m,n; scanf("%d%d",&m,&n); if(m<4||m>50||n<4||n>1000) { printf("input again\n"); scanf("%d%d",&m,&n); } char a[m][n+1]; for(int i=0;i<m;i++) { scanf("%s",a[i]);//gets(a[i]);不行 第一行数组获取不到 } for(int j=0;j<m;j++) { int count=0; //char temp; for(int k=0;k<n;k++) { for(int p=0;p<m;p++) { if(p==j) { printf("key"); continue; } else if(a[j][k]==a[p][k]) { count++; printf("yes"); } else{printf("no"); } } } printf("count=%d\n",count); a[j][n]=count+48; //把数字变为对应字符 } int max=0; for(int x=0;x<m-1;x++) { if(int(a[x+1][n])>int(a[x][n])) { max=x+1; } } printf("max=%d %c\n",max,a[max][n]); for(int y=0;y<n;y++) { printf("%c",a[max][y]); }//printf("\n%s",a[max]); } */
标签:case,7DNA,入门,int,max,scanf,UVA1368,break,printf 来源: https://www.cnblogs.com/lytuser/p/11707156.html