前天看的题,写好了输入片段,昨天写入党申请书没做题,今天才做完,题目也不是很难,思路挺好想的。交了三次才Ac。第一次没有注意相同时要字典序最小。
第二次是因为在输出时在后面加上了空格,但从样例看,输出应该是带空格的。看了好久不知道哪错了,第三次索性去了空格交上去,反而过了,也不知道是怎么回事。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #include <stdio.h> #include <string.h> #define maxm 60 #define maxn 1050 int main() { char a[maxm][maxn]; int b[4][maxn]; int i,j,m,n,T,count; scanf("%d\n",&T); while(T--) { scanf("%d %d\n",&m,&n); for(i=0;i<4;i++) { for(j=0;j<n;j++) { b[i][j]=0; } } for(i=0;i<m;i++) { scanf("%s",a[i]); } for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(a[i][j]=='A') b[0][j]++; else if(a[i][j]=='C') b[1][j]++; else if(a[i][j]=='G') b[2][j]++; else if(a[i][j]=='T') b[3][j]++; } } count=0; for(i=0;i<n;i++) { if(b[0][i]>=b[1][i]&&b[0][i]>=b[2][i]&&b[0][i]>=b[3][i]) { printf("A"); count+=b[0][i]; } else if(b[1][i]>=b[0][i]&&b[1][i]>=b[2][i]&&b[1][i]>=b[3][i]) { printf("C"); count+=b[1][i]; } else if(b[2][i]>=b[0][i]&&b[2][i]>=b[1][i]&&b[2][i]>=b[3][i]) { printf("G"); count+=b[2][i]; } else if(b[3][i]>=b[0][i]&&b[3][i]>=b[1][i]&&b[3][i]>=b[2][i]) { printf("T"); count+=b[3][i]; } } printf("\n%d\n",m*n-count); } return 0; }
|
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **