私は自分の評価に固執しています。次のような寸法 (行と列) のビットマップが与えられます。
4 5
0 0 1 1 1
0 0 1 0 1
1 0 1 1 1
1 1 1 1 1
タスクは、水平および垂直の最長の線と正方形 (すべて 1 でできている) を見つけることです。水平線で最初のキックが必要です。
ビットマップを 1D 配列に配置しましたが、次のステップがわかりません。
上の図の出力は、最も長い水平線の座標です。
3 0 3 4
助けていただければ幸いです。
私は自分の評価に固執しています。次のような寸法 (行と列) のビットマップが与えられます。
4 5
0 0 1 1 1
0 0 1 0 1
1 0 1 1 1
1 1 1 1 1
タスクは、水平および垂直の最長の線と正方形 (すべて 1 でできている) を見つけることです。水平線で最初のキックが必要です。
ビットマップを 1D 配列に配置しましたが、次のステップがわかりません。
上の図の出力は、最も長い水平線の座標です。
3 0 3 4
助けていただければ幸いです。
ヘッダーを構造体に抽出し、データを[]のような配列に抽出する必要があります。
R と C を画像の行数と列数とします。与えられた配列 a[] の場合、画像の各行は a[C*i] から始まります。i は行番号です。そのため、i で行にインデックスを付け、C*i+j でその行の各ビットにアクセスできます。j は C よりも小さいものでした。次にprocessing
、行ごとに実行して、最長の水平線の長さを見つける必要があります。これを少し変更すると、列 j にインデックスを付け、最長の垂直線を見つけることができます。
上記の処理を行うには、ポイントの構造を次のように作成します。
struct point
{
int x;
int y;
}p1, p2;
lenh
また、検出された水平線の長さを含む変数を作成します。llenh
また、最長の長さを格納するためのユーザー変数。(5i+j) でインデックス付けされた行 (i, j) の各頂点。llenh
0 に設定します。行から始めて、1 回の更新lenh
を見て、それが より大きいかどうかを確認しますllenh
。はいの場合は、ポイントを更新しp1
ます。0 の更新p2
ポイントを見て、0 に設定lenh
し、さらに更新しllenh
ます。
これを完全に修正したわけではありません。エラーがあればコメントしてください..