間違いなくPDFをレンダリングする必要があります。ポップラーのようなものを使用して、白い領域を検索することができます。ここでは、インスピレーションとして/使用を変更することができるとのpoppler使用して、オープンソースのAndroidアプリです。
http://code.google.com/p/apdfviewer/
あなたがレンダリングされたPDFを持っていたら、あなたはスペースを見つけるためにBoyer-Moore string search algorithmのようなものを使用することができます。私。 1Dでは "+++ ... ++ ..... + ..........."の文字列 "......."を探しています。 =白と+ =白ではない。あなたは十分なスペースを見つけるまで
- 列に沿った検索:
2Dでは、それは私が考えることができる最も効率的なものは、このようなもので、より複雑になります。
- 次の行に移動し、上の行にあったポイントまで検索します。
- その前にスペースがある場合は、手順2を繰り返して、続行します。
あなたは私が何を意味するかが表示される場合...このような何か:
void search(int row, int space_pos, int space_height_so_far)
{
for (int x = find_next_space(row, 0); x < space_pos; x = find_next_space(row, x+1))
{
search(row+1, x, 0);
}
if (is_space(row, space_pos))
{
if (space_height_so_far > ?)
cout << "Space found at " << row << ", " << space_pos << endl;
else
search(row+1, previous_space_pos, space_height_so_far);
}
}
うーん、私はすでにそのコードと間違っていくつかの物事を見ることができます..しかし、うまくいけばあなたのアイデアを得ます。私はアルゴリズムがすでに存在することを期待していますが、残念なことにその名前はわかりません。
私はむしろ再帰関数に反するが、はい、私はポイントを取得します。私は再帰なしで作成しようとします。また、あなたが言及したコードの問題は何ですか?私は何を見なければならないのですか? –