一个函数,请大侠帮小弟我看看,这个函数到底是怎样实现文件比较功能的
一个函数,请大侠帮我看看,这个函数到底是怎样实现文件比较功能的?
int CComp::Comp()
{
//If m_nLenA = 0, return m_nLenB and exit.
if( m_nLenA == 0 ) //m_nLenA为其中一个文件的大小
return(m_nLenB);
//If m_nLenB = 0, return m_nLenA and exit.
if( m_nLenB == 0 ) //m_nLenA为另一个文件的大小
return(m_nLenA);
WORD wResultOld_DH[_MAX_LEN] = {0};
WORD wResultNew_DH[_MAX_LEN] = {0};
WORD wPos1, wPos2, wPos3, wCost;
int nX, nY;
// char szBuff[256];
for( nY=0; nY <=m_nLenB; nY++ )
{
wResultOld_DH[nY] = nY;
}
for( nX=1; nX <=m_nLenA; nX++ )
{
wResultNew_DH[0] = nX;
for( nY=1; nY <=m_nLenB; nY++ )
{
//Calc d[i-1,j] + 1.
wPos1 = wResultOld_DH[nY]+1;
//Calc d[i,j-1] + 1.
wPos2 = wResultNew_DH[nY-1]+1;
//Calc cost.
if( m_wszStrA[nX-1]==m_wszStrB[nY-1] )
wCost = 0;
else
wCost = 1;
//Calc d[i-1,j-1] + cost.
wPos3 = wResultOld_DH[nY-1] + wCost;
//Comp
if( wPos1 < wPos2 && wPos1 < wPos3 )
{
wResultNew_DH[nY] = wPos1;
}
else if( wPos2 < wPos1 && wPos2 < wPos3 )
{
wResultNew_DH[nY] = wPos2;
}
else
{
wResultNew_DH[nY] = wPos3;
}
}
memcpy( wResultOld_DH, wResultNew_DH, sizeof(WORD)*_MAX_LEN );
}
return( wResultNew_DH[m_nLenB] );//函数返回不同字符个数
}
------解决方案--------------------
先比较大小,再比较内容
------解决方案--------------------
没看明白,只有写代码的人才明白了。
比较文件有这么麻烦吗?
------解决方案--------------------
看别人注释的算法程序,头大,
int CComp::Comp()
{
//If m_nLenA = 0, return m_nLenB and exit.
if( m_nLenA == 0 ) //m_nLenA为其中一个文件的大小
return(m_nLenB);
//If m_nLenB = 0, return m_nLenA and exit.
if( m_nLenB == 0 ) //m_nLenA为另一个文件的大小
return(m_nLenA);
WORD wResultOld_DH[_MAX_LEN] = {0};
WORD wResultNew_DH[_MAX_LEN] = {0};
WORD wPos1, wPos2, wPos3, wCost;
int nX, nY;
// char szBuff[256];
for( nY=0; nY <=m_nLenB; nY++ )
{
wResultOld_DH[nY] = nY;
}
for( nX=1; nX <=m_nLenA; nX++ )
{
wResultNew_DH[0] = nX;
for( nY=1; nY <=m_nLenB; nY++ )
{
//Calc d[i-1,j] + 1.
wPos1 = wResultOld_DH[nY]+1;
//Calc d[i,j-1] + 1.
wPos2 = wResultNew_DH[nY-1]+1;
//Calc cost.
if( m_wszStrA[nX-1]==m_wszStrB[nY-1] )
wCost = 0;
else
wCost = 1;
//Calc d[i-1,j-1] + cost.
wPos3 = wResultOld_DH[nY-1] + wCost;
//Comp
if( wPos1 < wPos2 && wPos1 < wPos3 )
{
wResultNew_DH[nY] = wPos1;
}
else if( wPos2 < wPos1 && wPos2 < wPos3 )
{
wResultNew_DH[nY] = wPos2;
}
else
{
wResultNew_DH[nY] = wPos3;
}
}
memcpy( wResultOld_DH, wResultNew_DH, sizeof(WORD)*_MAX_LEN );
}
return( wResultNew_DH[m_nLenB] );//函数返回不同字符个数
}
------解决方案--------------------
先比较大小,再比较内容
------解决方案--------------------
没看明白,只有写代码的人才明白了。
比较文件有这么麻烦吗?
------解决方案--------------------
看别人注释的算法程序,头大,