まず画面上の頂点の座標をすべて調べる
例えば上の図の画面なら
左上の頂点:(0,0),(2,3)
右上の頂点:(4,0),(5,3),(2,4)
右下の頂点:(4,3),(2,4),(5,6)
左下の頂点:(4,3),(0,4),(2,6)
・4つの頂点から長方形ができる組み合わせ
→(2,3),(5,3),(5,6),(2,6)
・3つの頂点と、すでにできた長方形の範囲内にもう1つ頂点があれば長方形ができる組み合わせ
→(0,0),(4,0),(0,4)とあと1つ(4,4)があればできる
・2つの頂点(対角線上)と、すでにできた長方形の範囲内にもう2つ頂点があれば長方形ができる組み合わせ
→なし
って感じでできそうな気がしました
「長方形の範囲内に頂点がある」というのは、長方形を1つ検出したときにその長方形の内部に仮想的な頂点があるとみなせばいいと思います
例えば上の例で(2,3)-(5,6)の長方形を検出したら、頂点のリストにその長方形の内部((3,4),(4,4),(3,5),(4,5))を追加して
左上の頂点:(0,0),(2,3) ,(3,4),(4,4),(3,5),(4,5)
右上の頂点:(4,0),(5,3),(2,4) ,(3,4),(4,4),(3,5),(4,5)
右下の頂点:(4,3),(2,4),(5,6) ,(3,4),(4,4),(3,5),(4,5)
左下の頂点:(4,3),(0,4),(2,6) ,(3,4),(4,4),(3,5),(4,5)
とみなせば(0,0)-(4,4)の頂点も検出できるようになりました。