1035. DNA matching

来源:互联网 发布:网络泥石流是什么意思 编辑:程序博客网 时间:2024/06/06 03:02

题目来源:http://222.200.185.45/show_problem.php?pid=1035&cid=

#include<stdio.h>int IsMatched (char* a, char* b);int main() {    int T = 0, i = 0, j = 0, n = 0, counter = 0;    char table[210][105] = {{0}};    scanf("%d", &T);    while (T--) {        counter = 0;        for(scanf("%d", &n), i = 0; i < n; i++)            scanf("%s", table[i]);        for (i = 0; i < n - 1; i++)            for (j = n-1; j > i; j--)                if (table[j][0] != 0 && table[i][0] != 0 && IsMatched(table[i], table[j])) {                    counter++;                    table[j][0] = 0;//将已匹配的标记                    break;//这个break很关键,刚好匹配一对后,跳出。不然会多匹配,出错。                }        printf("%d\n", counter);    }    return 0;}int IsMatched (char* a, char* b) {    if ((*b == '\0') && (*a == '\0'))         return 1;    else if (( *a == 'A' && *b == 'T') || ( *a == 'T' && *b == 'A')             || ( *a == 'C' && *b == 'G') || ( *a == 'G' && *b == 'C'))        return IsMatched(a+1, b+1);    else        return 0;}
0 0