Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 가장 큰 정사각형을 형성할 수 있는 직사각형의 수를 찾는 프로그램

<시간/>

rect[i]에 두 개의 요소[len_i, wid_i]가 있는 rect라는 배열이 있다고 가정합니다. 여기서 len_i와 wid_i는 각각 i번째 직사각형의 길이와 너비를 나타냅니다. 이제 k <=lenn_i 및 k <=wid_i인 경우 i번째 직사각형을 잘라 변 길이가 k인 정사각형을 형성할 수 있습니다. 예를 들어 직사각형 [4,6]이 있는 경우 한 변의 길이가 최대 4인 정사각형을 얻기 위해 잘라낼 수 있습니다. 이제 maxLen이라는 매개변수를 얻을 수 있는 가장 큰 정사각형의 변의 길이라고 생각합니다. 주어진 직사각형 중 하나에서. 한 변의 길이가 maxLen인 정사각형을 만들 수 있는 직사각형의 수를 찾아야 합니다.

따라서 입력이 rect =[[6,9],[4,10],[6,13],[17,6]]과 같으면 출력은 가장 큰 변의 제곱을 얻을 수 있으므로 3이 됩니다. 6, 4, 6, 6]이므로 가장 큰 세 개의 직사각형이 있습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • m :=새 목록

  • 각 r에 대해 다음을 수행하십시오.

    • m의 끝에 r의 최소 삽입

  • m에 존재하는 개수(m의 최대값) 및 반환

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(rect):
   m = []
   for r in rect:
      m.append(min(r))

   return m.count(max(m))

rect = [[6,9],[4,10],[6,13],[17,6]]
print(solve(rect))

입력

[[6,9],[4,10],[6,13],[17,6]]

출력

3