我已经编写了解决最长公共子序列问题的代码。只需要定义m个X维的二维表。我已经将它定义为一个全局变量,但它抛出了容量超出的错误。LCS的二维阵列表
#define FOR(i,n) for(i = 0; i < n ; ++ i)
int LCS(const char M[],int m, const char W[], int w)
{
// m length of M w length of W
int ans,min,i,j;
// lcs table needs to be defined with required dimensions
min = (m >= w) ? w : m;
FOR(i,m)
FOR(j,w)
{
if (i == 0 || j == 0)
lcs[i][j] = 0; // repetitive
else if (M[i] == W[j])
lcs[i][j] = lcs[i-1][j-1] + 1;
else
lcs[i][j] = max(lcs[i-1][j],lcs[i][j-1]);
}
return (min == lcs[m-1][w-1]);
}
我正在考虑使用矢量矢量,但然后是否有可能在同一时间定义大小为m x w?正常的
vector < vector <int> > lcs
不足以作为我想预先定义矢量并使用下标操作符在代码中访问它。
OK.WIthout object name form is allowed – devsaw 2013-05-11 21:57:22
@DamnDev对不起,我不明白。什么样的形式是允许的,哪些对象名称不存在? – pmr 2013-05-11 22:05:36