C语言数据结构中串和数组的三个问题!!高手速来!急!!在线等!

1 若n为主串长,m为子串长,则串的古典匹配算法最坏的情况下需要比较字符的总次数为
2假设有二维数组A6*8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,问末尾元素A57的第一个字节地址为,若按行存储,元素A14的第一个字节地址为,若按列存储,元素A47的第一个字节地址为。
3设数组a[1...60,1...70]的基地址为2048,每个元素占2个存储单元,若以序列为主序顺序存储,则元素a[32,58]的存储地址为。
请各位大虾能写出计算过程。

第一题 结果为 m*(n-m+1) 比如 子串 001 主串 0001 这就是最坏情况
第二题 第一问 求a[5][7] 由a[0][0]=1000(地址); a[0][1]=1006(因为6个字节) ;所以对于a[5][7]可以用(5*8+7)*6+1000=1282;或者直接用1000+(6*8-1)*6=1282;同理a[1][4]用(1*8+4)*6+1000=1072;
第三题 由题a[1][1]=2048(地址) 因为按列储存 所以a[32][58] 就为
((58-1)*60+32-1)*2+2048=9050; 其实可以把二维数组相像成想x-y坐标系 把求地址相像成求数列;即an=a1+(n-1)*d;
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-27
在a[7[[6]前面共有a[0]到a[6] 七行,每行的下三角元素个数分别为1,2,3,4,5,6,7,加起来共28个。然后第a[7]行中,a[7][6]前面又有a[7][0]到a[7][5]共6个元素,所以,以行为主序时,a[7][6]前面要存储的元素共有28+6=34个,
所以a[7][6]的地址为:&a[7][6]=2000+34*3=2012
第2个回答  2017-12-24
第三题答案8950
相似回答