• 病毒感染检测(运用BF算法)


    人的DNA和病毒DNA均表示成由一些字母组成的字符串序列。然后检测某种病毒DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了该病毒,否则没有感染。例如,假设病毒的DNA序列为baa,患者1的DNA序列为aaabbba,则感染,患者2的DNA序列为babbba,则未感染。(注意,人的DNA序列是线性的,而病毒的DNA序列是环状的)

    输入格式:

    输入第一行中给出1个整数i(1≤i≤11),表示待检测的病毒DNA和患者DNA的对数。
    输入i行串序列,每行由两个字符串组成(字符串中不含不可见字符),两字符串之间用一个空格分隔,分别代表病毒的DNA序列和患者的DNA序列,病毒的DNA序列和患者的DNA序列长度不超过500。

    输出格式:

    依次逐行输出每对检测样本的结果,感染输出:YES,未感染输出:NO。

    输入样例1:

    1. 1
    2. baa bbaabbba

    输出样例1:

    YES
    

    输入样例2:

    1. 2
    2. cced cdccdcce
    3. bcd aabccdxdxbxa

    输出样例2:

    1. YES
    2. NO

    代码长度限制

    16 KB

    时间限制

    400 ms

    内存限制

    64 MB

    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. int BF(char S[], char T[], char A[])//BF算法
    6. {
    7. int i = 0, j = 0;//i标记母串S,j标记子串T
    8. while (i < strlen(S) && j < strlen(A))
    9. {
    10. if (S[i] == T[j])//相等,都往下
    11. {
    12. i++;
    13. j++;
    14. }
    15. else//不等,母串回溯
    16. {
    17. i = i - j + 1;
    18. j = 0;
    19. }
    20. }
    21. if (j >= strlen(A)) return 1;
    22. else return 0;
    23. }
    24. int main()
    25. {
    26. char a[501], b[501];
    27. int n, flag = 0;
    28. cin >> n;//待测对数
    29. for (int i = 0; i < n; i++)
    30. {
    31. cin >> a;//输入病毒串
    32. getchar();
    33. cin >> b;//输入DNA
    34. char c[1000];
    35. for (int i = 0; i < strlen(a); i++)//病毒串为环串,遍历每种可能
    36. {
    37. int k = i;
    38. for (int j = 0; j < strlen(a); j++)//c赋值为该次判断的病毒串
    39. {
    40. c[j] = a[k++];
    41. if (k % strlen(a) == 0) k = 0;
    42. }
    43. if (BF(b, c, a) == 1)//用BF算法判断,病毒串为子串,DNA为母串
    44. {
    45. flag = 1;
    46. break;
    47. }
    48. else
    49. flag = 0;
    50. }
    51. if (flag == 1)
    52. cout << "YES" << endl;
    53. else
    54. cout << "NO" << endl;
    55. }
    56. }

     遇到问题有:

    1、BF算法中子串长度用病毒长度

    2、strlen函数用头文件才能过

    3、主函数中BF==1后,break跳出循环

  • 相关阅读:
    浅析计算机网络体系结构中的专业术语
    QT中获取类的属性和方法
    Hadoop面试题
    学习JAVA的第二天(基础)
    C++ - 异常介绍和使用
    《实验细节》如何从一句话中抽取实体
    新零售社交电商系统开发社交新零售电商系统模式
    十五章I/O(输入/输出)总结
    mysql——面试题初体验
    Code For Better 谷歌开发者之声——初识Web与谷歌,拉起兴趣之心。
  • 原文地址:https://blog.csdn.net/qq_74156152/article/details/133578722