我已經編寫了解決最長公共子序列問題的代碼。只需要定義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