更多“朴素模式匹配算法,算法运行时间为O(m*n)。”相关问题
  • 第1题:

    ●在字符串的模式匹配过程中,如果模式串的每个字符依次和主事中一个连续的字符序列相等,则称为匹配成功。如果不能在主串中找到与模式串相同的子串,则称为匹配失败。在布鲁特—福斯模式匹配算法(朴素的或基本的模式匹配)中,若主串和模式串的长度分别为n和m(且n远大于m),且恰好在主串末尾的m个字符处匹配成功,则在上述的模式匹配过程中,字符的比较次数最多为(57)。

    (57) A. n*m

    B. (n-m+1)*m

    C. (n-m-1)*m

    D. (n-m)*n


    正确答案:B

  • 第2题:

    A算法的时间复杂度为O(n^3),B算法的时间复杂度为O(2n),则说明()。

    A对于任何的数据量,A算法的时间开销都比B算法小

    B随着问题规模n的增大,A算法比B算法有效

    C随着问题规模n的增大,B算法比A算法有效

    D对于任何数据量,B算法的时间开销都比A算法小


    参考答案:B

  • 第3题:

    设主串长为n,模式串长为m(m≤n),则在匹配失败情况下,朴素匹配算法进行的无效位移次数为 ( )

    A.m

    B.n-m

    C.n-m+1

    D.n


    正确答案:C

  • 第4题:

    设某算法的计算时间表示为递推关系式T(n)=T(n-1)+n(n>O)及T(0)=1,则该算法的时间复杂度为(65)。

    A.O(lgn)

    B.O (nlgn)

    C.O(n)

    D.O(n2)


    正确答案:D
    解析:本题考查算法设计基础知识。根据题目中给出的递推关系:T(n)=T(n-1)+n=T(n-2)+n-1+n=…=T(0)+1+2+…+n-1+n=1+n(n+1)/2

  • 第5题:

    下面算法的时间复杂度为()

    A.O(1)

    B.O(n)

    C.O(n*n)

    D.O(n!)


    正确答案:B

  • 第6题:

    设某算法的计算时间可用递推关系式T(n)=2T(n/2)+n表示,则该算法的时间复杂度为(1)。

    A.O(lgn)

    B.O(nlgn)

    C.O(n)

    D.O(n2)


    正确答案:B
    解析:运用数学递推公式,可以推算出数量级O(nlgn)。

  • 第7题:

    将长度为n的单链表接在长度为m的单链表之后的算法时间复杂度为()。

    A.O(n)
    B.0(1)
    C.O(m)
    D.O(m+n)

    答案:C
    解析:
    要将长度为n的单链表接在长度为m的单链表之后,必须从单链表的头结点沿链找到长度为m的单链表的最后一个结点,所以时间复杂度为O(m)。

  • 第8题:

    某个算法的时间复杂度递归式T(n)=T(n-1)+n,其中n为问题的规模,则该算法的渐进时间复杂度为(62),若问题的规模增加了16倍,则运行时间增加(63)倍。

    A.O(n)
    B.O(nlgn)
    C.O(n2)
    D.O(n2lgn)

    答案:C
    解析:
    对于递归式,假设T(1)=1,则:
    T(n)=T(n-1)+n
    =T(n-2)+n-1+n
    =T(n-3)+n-2+n-1+n
    =1+2+…+n-1+n
    =n(n+1)/2
    可见,时间复杂度为O(n2)。若问题的规模增加了16倍,则运行时间增加了162=256倍。

  • 第9题:

    若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为()。


    正确答案:(n-m+1)*m

  • 第10题:

    KMP算法时间代价为O(n)。


    正确答案:正确

  • 第11题:

    判断题
    朴素模式匹配算法,算法运行时间为O(m*n)。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第12题:

    填空题
    若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为()。

    正确答案: (n-m+1)*m
    解析: 暂无解析

  • 第13题:

    某算法的时间代价递推关系为T(n)=2T(n/2)+n,T(1)=1,则该算法的时间复杂度为______。

    A.O(n)

    B.

    C.O(n2)

    D.O(1)


    正确答案:B
    解析:由时间代价严格推出时间复杂度比较复杂,对于这种题,可用特例验证,不过需要注意的是特例不能取太少,至少n取到5,这样规律基本就可以确定了。
      T(1)=1
      T(2)=2T(1)+2=4
      T(3)=2T(1)+3=5
      T(4)=2T(2)+4=12
      T(5)=2T(2)+5=13
      很容易排除D选项,其递增速率介于O(n)和O(nsup>2</sup>)之间,故选B。

  • 第14题:

    将长度为n的单链表链接到长度为m的单链表之后的算法的时间复杂度是()。

    A.O(1)

    B.O(n)

    C.O(m)

    D.O(m+n)


    参考答案:C

  • 第15题:

    ● 在字符串的模式匹配过程中,如果模式串的每个字符依次和主事中一个连续的字符序列相等,则称为匹配成功。如果不能在主串中找到与模式串相同的子串,则称为匹配失败。在布鲁特—福斯模式匹配算法(朴素的或基本的模式匹配)中,若主串和模式串的长度分别为n和m(且n远大于m),且恰好在主串末尾的m个字符处匹配成功,则在上述的模式匹配过程中,字符的比较次数最多为(57)。 A.n*m B.(n-m+1)*m C.(n-m-1)*m D.(n-m)*n


    正确答案:B
    试题57分析本题主要考查字符串的匹配。在本题的描述中,告诉我们是在主串末尾的m个字符处匹配成功,那么在这之前,从左到右依次匹配了n-m次,且都失败了,最坏的情况,就是每次匹配都是匹配到最后一个字符不符合,因此每次匹配的比较次数就是子串的长度,即m。而匹配成功时,一共也比较了m次。所以字符的比较次数最多为(n-m+1)*m次。参考答案(57)B

  • 第16题:

    若目标串的长度为n,模式串的长度为[n/3],则执行模式匹配算法时,在最坏情况下的时间复杂度是( )。

    A.O(1)

    B.O(n)

    C.O(n2)

    D.0(n3)


    正确答案:C
    解析:在主串中可能存在多个模式串“部分匹配”的子串,因而引起数次回溯,若除了最后一次匹配,其他比较每次都需要回溯,则循环次数的数量级为n2

  • 第17题:

    设S为C语言的语句,计算机执行下面算法时,算法的时间复杂度为()。

    A.n2

    B.O(nlgn)

    C.O(n)

    D.O(n2)


    正确答案:D

  • 第18题:

    某个算法的时间复杂度递归式T(n)=T(n-1)+n,其中n为问题的规模,则该算法的渐进时间复杂度为 (请作答此空) ,若问题的规模增加了16倍,则运行时间增加 ( ) 倍。

    A.O(n)
    B.O(nlgn)
    C.O(n2)
    D.O(n2lgn)

    答案:C
    解析:
    对于递归式,假设T(1)=1,则:
    T(n)=T(n-1)+n
    =T(n-2)+n-1+n
    =T(n-3)+n-2+n-1+n
    =1+2+…+n-1+n
    =n(n+1)/2
    可见,时间复杂度为O(n2)。若问题的规模增加了16倍,则运行时间增加了162=256倍。

  • 第19题:

    设某算法的计算时间表示为递推关系式T(n)=T(n-1)+n(n>O)及T(0)=1,则该算法的时间复杂度为( )。

    A.O(lgn)
    B.O(nlgn)
    C.O(n)
    D.O(n^2)

    答案:D
    解析:
    本题考查算法设计基础知识。根据题目中给出的递推关系:T(n)=T(n-1)+n=T(n-2)+n-1+n=…=T(0)+1+2+…+n-1+n=1+n(n+1)/2

  • 第20题:

    将长度为n的单链表连接在长度为m的单链表之后的算法的时间复杂度为()。

    • A、O(1)
    • B、O(n)
    • C、O(m)
    • D、O(m+n)

    正确答案:C

  • 第21题:

    排序的平均时间复杂度为O(n•logn)的算法是(),为O(n•n)的算法是()


    正确答案:快速排序、二路归并排序、堆排序;直接插入排序、简单选择排序、起泡排序

  • 第22题:

    设串长为n,模式串长为m,则KMP算法所需的附加空间为()。

    • A、O(m)
    • B、O(n)
    • C、O(m*n)
    • D、O(nlog2m)

    正确答案:A

  • 第23题:

    填空题
    排序的平均时间复杂度为O(n•logn)的算法是(),为O(n•n)的算法是()

    正确答案: 快速排序、二路归并排序、堆排序,直接插入排序、简单选择排序、起泡排序
    解析: 暂无解析