입력
게시판 : 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), (4,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"]
- 목표는 (오른쪽 + 왼쪽 + 1) * (하단 + 1)에 의해 계산 된 사각형 또는 가장 큰 영역을 가진 사각형 중 하나를 찾는 것입니다
- 최대 면적이 동일한 직사각형이 여러 개인 경우 하나를 출력하십시오. 선택적으로 (상위 좌표, 왼쪽 좌표, 오른쪽 좌표, 아래쪽 좌표) 사 전형적으로 가장 작은 것.
- 사각형의 가장자리는 보드의 가장자리와 평행해야합니다.
- 각 문자는 A에서 Z까지 인쇄 가능한 ASCII 문자입니다 (둘 다 포함).
산출
출력은 가장 큰 영역 사각형 모서리의 왼쪽 및 오른쪽 위치 여야합니다. 첫 번째 샘플 "보드"의 경우 큰 사각형은 노란색입니다.
대답은 다음과 같아야합니다.
[1, 1, 8, 4]
두 번째 예제 테스트 사례
다음의 입력 :
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
6 개의 사각형 영역을 식별하는 다음 세 좌표 목록 중 하나를 생성해야합니다.
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
이 질문은 제목과 함께 스택 오버플로에 게시 됩니다. 네 개의 동일한 모서리로 구성된 2D 배열에서 가장 큰 사각형을 찾는 방법은 무엇입니까? 그리고이 무례한 JS 솔루션으로 (내 코드이기 때문에 "무례"라고 말할 수 있습니다.) :
좋아, 내 첫 번째 게시물입니다, 나와 관용하십시오. 퀴즈를 개선하기 위해 당신이 말하는 모든 것을 바꿀 것입니다.
((left,top),(right,bottom))
좋습니다. 질문이 완전히 수정되면 답변을 삭제하고 다시 답변합니다.