• 2022-06-12
    采用顺序结构存储串,编写一个算法,求串[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex]和串[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex]的一个最长公共子串。
  • 解:以[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex] 为主串,[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex]为子串,设[tex=3.429x1.0]dEXQufbgWJBcRHqwAi+arw==[/tex]为最长公共子串在[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex]中的序号, [tex=3.357x1.0]Fy21hw3fSIeKZk0UiWnI9g==[/tex]为最长公共子串的长度。采用[tex=1.429x1.0]sOqX562mcRCYAjv7e4YlSA==[/tex]算法扫描串[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex]和扫描串[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex],当[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex]的当前字符等于[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex]的当前字符时,比较后面的字符是否相等,这样得到一个公共子串(其在[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex]中起始位置为[tex=0.357x1.0]+eJLelx8thmbkEj/Y0iCOw==[/tex],长度为[tex=1.786x1.357]si8l+6WLHzWMBp9n8F2kmA==[/tex]。.将[tex=1.429x1.0]NGvi8IlyklEUwqLWvkjOxw==[/tex]与 [tex=3.357x1.0]Fy21hw3fSIeKZk0UiWnI9g==[/tex]相比,若[tex=1.429x1.0]NGvi8IlyklEUwqLWvkjOxw==[/tex]较大,则置[tex=10.5x1.214]CZN2giCcI8zbYZ0lOHOO6jkIdK2pFBQCOdI5+kR3t8M=[/tex]。如此直到扫描完[tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex] 为止.对应的算法如下:SqStrinq MaxComStr( SqString s, sqStrinq t){    sqstring sLr;    //str 用于存放最长公共子串    int maxidx = 0 , maxlen = 0,i,j,k, len;    i= 0;    //i作为扫描s的指针    while (i < s.length)    {    j= 0;    //j作为扫描t的指针        while ( j< t. length)        {    if ( s.data[ i] == t.data[j])            {    len= l;    //找一个公共子串,其在s中的位置为i,长度为len                for (k = 1 ; i + k < s.len && j+k< t. len                            &&s.data[ i+k] == t.data[ j+k];k ++)                    len tt ;                    if ( len > maxlen)    //将较大长度者赋给idx 与len                    {    maxidx = i;                        maxlen = len;                    }                    j+= lon;    //继续扫描t中第j+ len 字符之后的字符            }            else j tt;        }        i ++;    //继续扫描s中第i字符之后的字符    }    for (i= 0; i

    举一反三

    内容

    • 0

      若主串 [tex=11.929x1.429]WHOEOfgHVTwZh3BDtQNf+uNljmlsyFMtJDkaQCU63Tk=[/tex]模式串[tex=6.286x1.429]GVJxA20nsC5e/KMxwmtg7veRfGDEYRoMqj0eqQfabpA=[/tex]求出 [tex=0.429x0.929]gQzDwVIykgengUJAyMAHkQ==[/tex]的[tex=2.0x0.929]7QqODb1IqAMYMAFmGasRTA==[/tex]数组,并给出采用[tex=2.5x1.0]BtqR7a2KO/GrSL9Oh5fhIQ==[/tex]算法求子串位置的过程。

    • 1

      设[tex=2.786x1.357]AdT1Ywl2aGGiB/EXxjVWAA==[/tex]为[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex]时刻的消费水平,[tex=0.5x1.0]ycRjqHa76IDpEZtluYQxdQ==[/tex](为常数)是[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex]时刻的投资水平,[tex=2.929x1.357]kG0nCtqPr/uYlTBNdenzOA==[/tex]为[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex]时刻的国民收入,它们满足[tex=8.857x3.357]fnpmC2J6JmQBLyo5NmGAz4SYZuM09ZmogZQNx7HZ+/ea7/kbX0wHuYFcxJLtBKfIWjNApc2tX6GAYbgohuLjFnhGcw6RKpeMAJys0d1wptE=[/tex],其中[tex=8.286x1.214]ETbCmEd46Z/AcmZYfvB36g==[/tex]均为常数.求[tex=3.786x1.357]L+aF9FS6Xp9Rg/2QJPWSyQ==[/tex]

    • 2

      求[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex]的值,使二次型[tex=22.429x1.571]JLm2GSM4LZ595FWooMQMWd9gmISBtAIl+HEGB8g2d0ZGTMu6wTejMoVJxYJ8fuDc6KTvHLIs8fmn9Ob44d1o0JLs6vUcKAeXqPXRXpHZrZ0=[/tex]是正定的。

    • 3

      设[tex=22.286x1.5]+O/TWO5kRyNyLezzXjFHA6AlTnse1BbRIWZXTWybsfHzoqV5dU0/+T8jPPRIaW21/MxkV1gJChsXadlhmzbesg==[/tex]的最大公因式是一个二次多项式,求[tex=0.429x0.929]r8lLiDb0KHTzu/2y/Au89w==[/tex],[tex=0.643x0.786]cnVwa8IjZzNSEmAUXJ8VCQ==[/tex] 的值.

    • 4

      设  [tex=5.714x1.214]lZfcRDOHT43TyAqQoLZlW8UiH0GFLj08pVPZaN1Dbiw=[/tex]是线性空间 [tex=0.643x1.0]SW0o8G0GHsmLXldwnq7xKg==[/tex]  的  [tex=0.5x0.786]ICKY+F5VdoSQrRn/wUUOyw==[/tex]  个非平凡的子空间,证明 : [tex=0.643x1.0]SW0o8G0GHsmLXldwnq7xKg==[/tex] 中至少有一向量不属于[tex=5.357x1.214]lZfcRDOHT43TyAqQoLZlW6NOFio2Pds294Bv4ocg9JA=[/tex]中任何一个.