0001 uint32_t lcsM(const char* A, int n, const char* B, int m); 0002 0003 uint32_t** M; //二维快查表 0004 0005 uint32_t lcsM0(const char* A, int n, const char* B, int m) { 0006 uint32_t* lcs = new uint32_t[(n+1)*(m+1)]; //一维快查表 0007 memset(lcs, 0xFF, sizeof(uint32_t)*(n+1)*(m+1)); //以UINT_MAX示意“尚未计算” 0008 M = new uint32_t*[n+1]; //二维快查表 0009 for (int i = 0; i <= n; i++) M[i] = lcs + (m+1)*i; 0010 for (int i = 0; i <= n; i++) M[i][0] = 0; //第0行清零 0011 for (int j = 0; j <= m; j++) M[0][j] = 0; //第0列清零 0012 uint32_t solu = lcsM(A, n, B, m); 0013 delete[] lcs; 0014 return solu; 0015 } //lcsM0