配列を 1 回繰り返します。
繰り返しながら、最も多くのleft
列 (x
最初に表示された列) と最も多くright
(x
最後に表示された列) を見つけます。2 行についても同じです。1 つは にtop
、もう 1 つは にbottom
。これらの 4 行は、画像の境界を示します。
left right
{ ' ', ' ', ' ', ' ' },
top { ' ', ' ', 'x', ' ' },
{ ' ', 'x', ' ', ' ' },
bottom { ' ', 'x', 'x', ' ' }
擬似コード:
int left = INT_MAX, right = -1, top = INT_MAX, bottom = -1
for (int y = 0; y < Y; y++)
for (int x = 0; x < X; x++)
if (t[x][y] == 'x')
{
if (left > x) left = x
if (right < x) right = x
if (top > y) top = y
bottom = y // we don't need if! :)
}
入力例を考えると、次のようなインデックスが生成されます。
left == 1
right == 2
top == 1
bottom == 3
その境界を含む部分行列を取得すると、模範的な出力画像が得られます。