请教算法高手:如何在矩阵中,移动一个矢量的有效算法?
风里有梦 2005-10-16 06:11:29
一个 4 x 4 矩阵定义如下:
aRectangle[] = {{0, 0, 1, 1},
{0, 0, 1, 0},
{0, 1, 1, 0},
{0, 0, 0, 0}
}
如上矩阵中,内中为1的为图形,为0的背景空间,假如我想将图形移到最左边?最有效的算法是……?请看我的方案,但是我认为分成两步太慢了,能不能一个循环搞定它并且最快的?
------------------------------------------------------
// 移到原点坐标 x
for ( i = 0; i < 4; i++ )
{
for ( j = 0; j < 4; j++ )
if ( aRectangle[j][i] )
goto xFIANL;
for ( j = 0; j < 4; j++ )
{
for ( k = 0 ; k < 4 - 1; k++ )
aRectangle[j][k] = aRectangle[j][k + 1];
aRectangle[j][4 - 1] = 0;
}
i--;
}
xFIANL:
// 移到原点坐标 y
for ( i = 0; i < 4; i++ )
{
for ( j = 0; j < 4; j++ )
if ( aRectangle[i][j] )
goto yFIANL;
for ( j = 0; j < 4; j++ )
{
for ( k = 0 ; k < 4 - 1; k++ )
aRectangle[k][j] = aRectangle[k + 1][j];
aRectangle[4 - 1][j] = 0;
}
i--;
}
yFIANL:
-----------------------------------------------------------------