• hrbustoj 1551:基础数据结构——字符串2 病毒II(字符串匹配,BM算法练习)


    基础数据结构——字符串2 病毒II
    Time Limit: 1000 MS Memory Limit: 10240 K
    Total Submit: 284(138 users) Total Accepted: 177(135 users) Rating: Special Judge: No
    Description
    自从计算机病毒的概念被提出之后,病毒的种类可以说是层出不穷。现在,单纯的病毒是逃不过杀毒软件的。因此现在的病毒往往隐藏一些字符之中来达到蒙混过关的目的。已知连续的字符串"bkpstor"是一段病毒编码,请分析给出的一段字符串中是否包含病毒编码。

    Input
    本题有多组测试数据,对于每组数据输入一个字符串Str(长度不超过100),处理到文件结束。

    Output
    如果字符串中包含病毒编码,输出Warning并换行,否则输出Safe并换行。

    Sample Input
    123455676sa

    Sample Output
    Safe

    Author
    杨和禹@HRBUST


      字符串匹配

      我使用的是BM算法,BM算法是BF算法的优化,是一种亚线性匹配算法。比BF稍快一些。

      代码:

     1 #include <stdio.h>
     2 int BM_index(char t[],char s[])    //返回第一次匹配的位置
     3 {
     4     int i,j,lt,ls;
     5     for(lt=0;t[lt];lt++);    //计算长度
     6     for(ls=0;s[ls];ls++);
     7     //BM匹配
     8     for(i=ls-1;i>=lt-1;i--)
     9         if(s[i]==t[lt-1]){
    10             for(j=2;j<=lt;j++)
    11                 if(t[lt-j]!=s[i-j+1])
    12                     break;
    13             if(j>lt) break;
    14         }
    15     if(i>=lt-1) return i-lt+1;
    16     return -1;
    17 }
    18 int main()
    19 {
    20     char t[20]="bkpstor",s[110];
    21     while(scanf("%s",s)!=EOF){
    22         if(BM_index(t,s)==-1)
    23             printf("Safe
    ");
    24         else 
    25             printf("Warning
    ");
    26     }
    27     return 0;
    28 }

    Freecode : www.cnblogs.com/yym2013

  • 相关阅读:
    过滤xml文件内容
    python接口自动化之通过接口模拟一通电话的多段对话
    浅谈python性能与优化
    监控之Linux系统监控命令大全
    mysql windows 5.7 安装版下载地址
    liunx 安装jdk
    下载文件,后台执行没问题,没下载文件
    spring boot thymeleaf
    spring security文档地址
    redis 可视化工具下载地址
  • 原文地址:https://www.cnblogs.com/yym2013/p/3692071.html
Copyright © 2020-2023  润新知