zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    火狐firefox进行post提交测试
    spring cloud:config-eureka-refresh
    spring cloud:config
    使用Docker部署Gitlab
    Docker配置加速器
    spring cloud:eureka
    Sql Server 出现此数据库没有有效所有者问题
    将VS2012的项目转化成VS2010
    SQL Server 2008将数据库数据导出到脚本
    Sql Server 显示插入Identity字段
  • 原文地址:https://www.cnblogs.com/yym2013/p/3692071.html
Copyright © 2011-2022 走看看