3-31记录(行主序,列主序回顾,KMP的next数组以及中缀转后缀)

1.

  • 行主序

    • 对于 A[i][j],假设数组维度为 [rows][cols],基地址为 Base,元素大小为 size

      Addressrow​=Base+[i×columns+(j−1)]×element_size
    • 示例A[1][1] 在 A[2][3] 中的偏移量:1 * 3 + 1 = 4

  • i*列数

  • 列主序

    • 对于 A[i][j]

      Addresscol​=Base+[(j−1)×rows+i]×element_size
    • 示例A[1][1] 在 A[2][3] 中的偏移量:1 * 2 + 1 = 3

  • j*行数

2.KMP

还是这道

ababaaabab

0112342234

算法的大致思路就是:到第m位时,遮掉第m位,然后看前面那一串的前缀/后缀(注意是前缀后缀并如果看前缀就遮住最后一位如果看后缀就遮住第一位),看有没有相同的字串,然后如果有相同的最大子串(应该是最大吧),子串长度加一。

给出两种方法,个人感觉都可以:

1.不遮,比如m=4的时候,abab,前缀ab,后缀ab,最大相同字串长度为2

2。遮,m=4,aba,前缀a,ab,后缀ba,b,强调这里前后缀不能完全重叠,最大相同字串为a,一位+1,也能得出2.

亲测无效:

不遮会有风险,比如ababa,不遮的画共同部分只有a,应该是1,但实际是4,一个严重误区,要改正


3.关于这张图的左优先,学长老师均不理解,老师给出的建议就是继续按照小时候的正常方法算就行,但感觉还是有漏洞,可以把*当成第一个

     但是改变一下顺序也能算出来,不清楚什么情况,先这么想吧。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值