码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 病毒感染检测(运用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跳出循环

  • 相关阅读:
    Word处理控件Aspose.Words功能演示:使用 Python 查找和替换 Word 文档中的文本
    mysql 忘记 root 密码的解决办法(针对不同 mysql 版本)
    从零实现Web框架Geo教程-中间件-05
    小程序全局变量与组件内部实时监听全局变量的改变
    日期格式化 YYYY-MM-DD 出现时间偏移量
    OLED透明屏交互技术:开创未来科技的新篇章
    【猿创征文】Vue3 企业级优雅实战 - 组件库框架 - 6 搭建example环境
    第3章业务功能开发(修改市场活动备注)
    TCP通讯CS模式之C#设计笔记(十八)
    AI服务器,深度学习英特尔服务器主板和超微服务器主板哪个牌子好?
  • 原文地址:https://blog.csdn.net/qq_74156152/article/details/133578722
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号