动态规划算法(2),lcs算法,改进空间复杂度

动态规划算法(2),lcs算法,改进空间复杂度

const   string  LCS2( const   string &  strX, const   string &  strY)
{
    
int  xlen = strX.size();  // 横向长度
     int  ylen = strY.size();  // 纵向长度
    vector < int >  arr(ylen);  // 当前行
    
    
int  length = 0 ;          // 矩阵元素中的最大值
     int  pos = 0 ;              // 矩阵元素最大值出现在第几列
    arr.assign(ylen, 0 );
    
for ( int  x = 0 ;x < xlen;x ++
    {
        
for ( int  y = 0 ;y < ylen;y ++ )
        {
            
if  (strX.at(x) == strY.at(y))
            {
                
if (y == 0 )
                    arr[y]
= 1 ;
                
else
                    arr[y]
= arr[y - 1 ] + 1 ;
                
if (arr[y] > length)
                {
                    length
= arr[y];
                    pos
= y;
                }
            } 
        }
    }
    
string  res = strY.substr(pos - length + 1 ,length);
    
return  res;
}

你可能感兴趣的:(动态规划算法(2),lcs算法,改进空间复杂度)