タイトルがあいまいに思えるので、問題を明確に理解するのに役立つ画像を添付しました。白い領域内の穴を見つける必要があります。穴は、白い領域内の値が「0」の 1 つまたは複数のセルとして定義されます。つまり、値が「1」のセルで完全に囲まれている必要があります (たとえば、ここでは 1、2、3 とマークされた 3 つの穴が表示されます) )。私は非常に素朴な解決策を思いつきました: 1. マトリックス全体で値 '0' のセルを検索します 2. そのようなセル (黒いセル) が見つかったときに DFS(Flood-Fill) を実行し、タッチできるかどうかを確認しますメインの長方形領域の境界 3. DFS 中に境界に触れることができる場合、それは穴ではなく、境界に到達できない場合は穴と見なされます。
さて、この解決策は機能しますが、この問題に対する他の効率的で高速な解決策があるかどうか疑問に思っていました。
考えを教えてください。ありがとう。