C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 双阵列特里问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从 http://linux.thai.net/~thep/datrie/datrie.html了解Double-Array Trie实现
但我不明白以下部分.

check[base[s] + c] = s
base[s] + c = t

在这里添加c意味着什么.

任何人都可以用简单的语言解释算法.

解决方法

想象一下,您将2D数组折叠为一维数组:

int arr2D[2][3];
int arr1D[2 * 3]; // # of rows * # of columns

// access element [1][2] of 2D array,i.e.,the last element
int elem2D = arr2D[1][2];
// access element [1][2] of 1D array,the last element
int elem1D = arr1D[1 * 3 + 2];
// =========================================================
lets visualize the array access:
arr2D => x/y 0  1  2
          0 [n][n][n]
+1 on x > 1 [n][n][n]
+2 on y ---------- ^
y_len  =>   ^-------^ 3 elements
so the access happens with x * y_len + y
                           1 *   3   + 2
Now for the 1D array
we want the second row,so we go with 1 * 3
(0-based access,y_len = 3)
and then we want the 3rd element,so + 2
(again,0-based access)
arr1D =>  x  0  1  2 
            [n][n][n]
             3  4  5
1 * 3 = 3 > [n][n][n]
      + 2 = 5 ---- ^

我希望我没有让这太复杂(尽管我认为我做了……).

本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。

大佬总结

以上是大佬教程为你收集整理的c – 双阵列特里问题全部内容,希望文章能够帮你解决c – 双阵列特里问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。