入力
ボード:次のような文字の2Dコンテナ(マトリックス、リストのリストなど):
["B", "C", "C", "C", "C", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "B", "B", "A", "C", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
リストのリストを選択した場合、すべてのサブリストが同じ長さであると想定できます。
ルール
- 有効な長方形を作成するには、すべての長方形の角に同じ「文字」が必要です。
- 例では、Xを鳴らすとサンプルボードを 見てください。(1,0)でも(1,0)でも(1,0)でも(1,3)および(4,3)でも 'X'を見ることができるので、長方形[1,0,4,3]は(1,0)から(4,3):
X 付きのサンプルボード:
["B", "X", "C", "C", "X", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "X", "B", "A", "X", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
- 目標は、(right-left + 1)*(bottom-top + 1)で計算される最大面積を持つ長方形または長方形の1つを見つけることです。
- 最大面積が同じ長方形が複数ある場合は、いずれかを出力します。必要に応じて、(上座標、左座標、右座標、下座標)辞書編集的に最小のもの。
- 長方形のエッジは、ボードのエッジに平行でなければなりません。
- 各文字は、AからZまでの印刷可能なASCII文字です(両方とも含まれます)。
出力
出力は、最大面積の長方形の角の左上と右下の位置でなければなりません。最初のサンプル「ボード」では、大きな正方形は黄色の正方形です。
答えは次のとおりです。
[1、1、8、4]
2番目のサンプルテストケース
以下の入力:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
エリアを識別するこれらの3つの座標リストのいずれかを6つの長方形で生成する必要があります。
[1、0、2、2
]
[1、0、3、1 ] [3、2、5、3]
この質問は、「Stack Overflow」というタイトルで投稿されています。4つの同一の角で形成された2D配列で最大の長方形を見つける方法は?そして、この失礼なJSソリューションでは(私のコードですので「失礼」と言えます;)
さて、私の最初の投稿です、私と一緒に寛容にしてください。クイズを改善するためにあなたが言うすべてを変更します。
((left,top),(right,bottom))
ます。私は答えを削除し、質問が完全に洗練されたときにもう一度答えました。