Longest Common Subsequence 問題を解決するためのコードを作成しました。m X w 次元の 2D テーブルを定義する必要があるだけです。グローバル変数として定義しましたが、容量超過エラーがスローされました。
#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]);
}
ベクトルのベクトルを使用することを検討していますが、同時にサイズを mxw として定義することは可能ですか? 通常の
vector < vector <int> > lcs
ベクトルを事前に定義し、コードのように添字演算子を使用してアクセスしたいので、十分ではありません。