0과 1의 격자에서 이등변 삼각형을 식별하는 방법은 무엇입니까?

페이튼

임의의 0과 1로 구성된 10 * 10 크기의 그리드를 고려하십시오. 그리드에서 가장 높은 수준의 이등변 삼각형을 식별하고 싶습니다.

그리드:

1 1 0 1 1 1 1 1 1 1

1 1 1 1 1 1 0 1 1 1

1 1 1 1 0 1 0 1 1 1

1 0 1 1 1 1 1 1 1 1

1 1 1 0 1 0 0 1 1 1

1 1 0 1 1 1 1 1 1 1

0 1 1 1 1 1 1 1 0 0

1 1 1 0 1 1 1 1 0 1

1 1 1 1 1 1 1 1 0 1

1 1 1 1 1 1 1 1 0 1

예상 출력:

삼각형의 최고 수준은 3입니다.

회식

나는 모두 1또는 모두 와 함께 삼각형 위쪽 방향만 찾는다고 가정 합니다 0. 예:

    1         
  1 1 1       0 
1 1 1 1 1   0 0 0

맨 위 지점에서 시작하여 backtracking내가 구현 한 최대 삼각형을 find_max_triangle찾은 다음 모든 행렬을 순회하고 모든 지점에서 시작할 수 있습니다.

일부 지점을 건너뛰어 순회 시간을 줄일 수 있습니다. 최적화는 현재 max_level만큼 i, j를 잘라내는 것입니다.

def max_triangles(matrix):
    m, n = len(matrix), len(matrix[0])
    max_level = 1

    def find_max_triangle(x, y, v):
        nonlocal max_level
        cur_level = 1
        while True:
            x += 1
            if x == m:
                return
            for i in range(-cur_level, cur_level + 1):
                _y = y + i
                if _y < 0 or _y >= n or matrix[x][_y] != v:
                    return
            cur_level += 1
            max_level = max(max_level, cur_level)

    for i in range(m):
        # optimization: pruning i by current max_level
        if i + max_level >= m:
            break
        for j in range(n):
            # optimization: pruning j by current max_level
            if j - max_level >= 0 and j + max_level < n:
                find_max_triangle(i, j, matrix[i][j])

    return max_level

테스트 및 출력:

matrix = [[1, 1, 0, 1, 1, 1, 1, 1, 1, 1],
          [1, 1, 1, 1, 1, 1, 0, 1, 1, 1],
          [1, 1, 1, 1, 0, 1, 0, 1, 1, 1],
          [1, 0, 1, 1, 1, 1, 1, 1, 1, 1],
          [1, 1, 1, 0, 1, 0, 0, 1, 1, 1],
          [1, 1, 0, 1, 1, 1, 1, 1, 1, 1],
          [0, 1, 1, 1, 1, 1, 1, 1, 0, 0],
          [1, 1, 1, 0, 1, 1, 1, 1, 0, 1],
          [1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
          [1, 1, 1, 1, 1, 1, 1, 1, 0, 1]]

print(max_triangles(matrix))

# output 3

도움이 되셨기를 바라며 추가 질문이 있는 경우 댓글을 남겨주세요. : )

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

STL 형식에서 모델의 삼각형과 꼭짓점을 읽는 방법은 무엇입니까?

WPFToolkit의 DataPointStyle을 원형에서 사각형, 삼각형 등으로 변경하는 방법은 무엇입니까?

2D에서 삼각형과 곡선의 교차점을 찾는 방법은 무엇입니까?

정사각형을 하드 코딩하지 않고 삼각형의 각 변에 정사각형을 만드는 방법은 무엇입니까?

Java에서 별 모양의 삼각형을 인쇄하는 방법은 무엇입니까?

이미지의 상단과 하단에서 직사각형을 자르는 방법은 무엇입니까?

NumPy에서 삼각형 행렬을 정사각형으로 변환하는 방법은 무엇입니까?

mysql에서 중첩 된 사례를 사용하여 삼각형 유형 (세 변의 길이가 주어짐)을 찾는 방법은 무엇입니까?

0과 1의 문자열을 bitset으로 변환하는 방법은 무엇입니까?

다각형을 식별하는 방법은 wpf에서 삼각형입니다.

드로어 블에 획이있는 하나의 삼각형면이있는 사각형 모양을 만드는 방법은 무엇입니까?

Chartjs Radar에서 격자 선과 격자 레이블을 제거하는 방법은 무엇입니까?

WebGL에서 삼각형을 그리는 데 충분한 삼각형의 변의 길이 만 통과합니까?

파이 게임에서 삼각형을 특정 각도로 회전하는 방법은 무엇입니까?

인수에서 & 및 *의 변형과 동등성을 비교하는 것의 차이점은 무엇입니까?

awesome wm에서 작업 공간의 식별자로 0을 사용하는 방법은 무엇입니까?

Elementor에서 위젯과 레이아웃 자식 사이의 간격 / 공간을 제거하는 방법은 무엇입니까?

typescript의 유형 정의에서`[0, 1, 2, ... 0 []]`을 이해하는 방법은 무엇입니까?

정규식에서 0과 10 사이의 두 자리와 두 자리 이하의 전체 문자열을 일치시키는 방법은 무엇입니까?

조인 된 mysql 테이블의 레코드에 대해 MYSQL EXISTS의 mysql 별칭을 0과 1로 수정하는 방법은 무엇입니까?

HTML 페이지에서 직각 삼각형 안에 원을 그리는 방법은 무엇입니까?

데이터 프레임의 이전 행과 비교하여 행의 문자열 변경을 식별하는 방법은 무엇입니까?

1과 0의 문자열 시퀀스로 바이너리 파일을 읽는 방법은 무엇입니까?

동형 삼각형 집합에서 하나의 삼각형 만 반환하는 방법은 무엇입니까?

Fabric JS : 삼각형의 상단과 왼쪽 위치를 동시에 애니메이션하는 방법은 무엇입니까? + 애니메이션 버그

CSS로 div 삼각형의 상단과 하단을 만드는 방법은 무엇입니까?

Unix에서 각 행의 데이터 형식을 변경하는 방법은 무엇입니까?

삼각형을 그리고 그 안에 html 테이블을 삽입하는 방법은 무엇입니까?

Matlab의 좌표 값에서 삼각형 보간을 계산하는 방법은 무엇입니까?

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관