Menu
CoddyTech

Matrix Chain Multiplication

어려움동적 계획법python iconjava iconcpp iconc iconjs icon+10

행렬의 연쇄는 dims로 설명됩니다. 행렬 i의 행 개수는 dims[i]이고 열 개수는 dims[i+1]이므로, 각 행렬은 다음 행렬과 곱할 수 있습니다. p × q 행렬에 q × r 행렬을 곱하는 데는 스칼라 곱셈이 p × q × r회 필요하며, 결과는 p × r 행렬입니다. 괄호를 배치하는 모든 방법은 최종 곱은 같지만 비용은 같지 않습니다. 전체 연쇄를 곱하는 데 필요한 스칼라 곱셈의 최소 횟수를 반환하세요.

함수

matrixChainOrder(dims: integer-array) → integer
dimsinteger-array
연쇄를 따라 각 크기는 다음과 같습니다. 행렬 i의 크기는 dims[i] × dims[i+1]입니다.
반환값integer
전체 체인을 곱하는 데 필요한 스칼라 곱셈의 최소 횟수

제약 조건

  • 2 ≤ dims.length ≤ 100이므로, 이 체인에는 행렬이 1개에서 99개까지 포함됩니다.
  • 1 ≤ dims[i] ≤ 100
  • 정답은 최대 98 × 106으로, 32비트 부호 있는 정수 범위에 충분히 들어갑니다.

예제

입력
dims = [4, 10, 3, 12]
출력
264
설명
처음 두 행렬을 곱하는 데 4 × 10 × 3 = 120이 들고 4 × 3 행렬이 남습니다. 여기에 3 × 12 행렬을 곱하면 144가 더해져 총 264입니다. 다른 순서로 계산하면 360 + 480 = 840이 듭니다.
challenge icon

후속 질문

최소 비용을 만드는 서로 다른 괄호화 방식이 몇 개인지도 셀 수 있나요?

코드 초기화
def matrixChainOrder(dims):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

dims = [4, 10, 3, 12]

예상 출력

264