1.
-
行主序:
-
对于
Addressrow=Base+[i×columns+(j−1)]×element_sizeA[i][j]
,假设数组维度为[rows][cols]
,基地址为Base
,元素大小为size
: -
示例:
A[1][1]
在A[2][3]
中的偏移量:1 * 3 + 1 = 4
。
-
-
i*列数
-
列主序:
-
对于
Addresscol=Base+[(j−1)×rows+i]×element_sizeA[i][j]
: -
示例:
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.关于这张图的左优先,学长老师均不理解,老师给出的建议就是继续按照小时候的正常方法算就行,但感觉还是有漏洞,可以把*当成第一个
但是改变一下顺序也能算出来,不清楚什么情况,先这么想吧。