> 백엔드 개발 > C++ > 본문

최대 k를 취하는 가능한 최대 균형 이진 하위 문자열 분할

WBOY
풀어 주다: 2023-08-29 09:41:07
앞으로
1228명이 탐색했습니다.

최대 k를 취하는 가능한 최대 균형 이진 하위 문자열 분할

C 프로그래밍 언어의 배열은 크기가 고정되어 있습니다. 즉, 크기가 지정되면 이를 축소하거나 확장할 수 없습니다.

아시다시피 배열은 연속된 메모리 영역에 저장되는 동일한 데이터 유형의 요소 집합입니다.

v[] 값의 배열과 이진 배열 a[]가 주어지면 목표는 각 세그먼트가 동일한 양의 0과 1s. i와 j는 분할 세그먼트의 인접 인덱스이고 각 분할 비용은 (v[i] - v[j])2입니다.

문제 설명

최대 k의 비용으로 가능한 최대 균형 이진 하위 문자열 분할을 찾는 프로그램을 구현하세요.

예제 1

으아악

얻은 출력은 다음과 같습니다: 1

설명

K 값이 1이므로 첫 번째 인덱스와 두 번째 인덱스 사이를 잘라낼 수 있습니다.

이 경우 [0, 1] 및 [0, 0, 1, 1]은 최종 결과의 균형 잡힌 이진 하위 문자열입니다.

이 컷을 만드는 데 드는 비용은 (8 - 9)^2 = 1, 1 = 1입니다.

예시 2

으아악 으아악

설명

첫 번째 컷은 첫 번째와 두 번째 지수인 4와 7 사이에서 이루어지며 비용은 (4 - 7)^2 = 9이고 두 번째 컷은 세 번째와 네 번째 지수인 7과 10 사이에서 이루어지며 비용이 발생합니다. us (7 - 10)^ 2 = 9. 현재로서는 더 이상 잘라낼 수 없습니다. 이 경우 발생하는 균형 잡힌 이진 하위 문자열은 [1, 0], [1, 0] 및 [1, 1, 0입니다. , 0].

접근

최대 비용 k로 가능한 최대 균형 이진 하위 문자열 분할을 찾기 위해 다음 방법론을 사용합니다.

여기에서는 이 문제를 해결하고 최대 비용 k로 가능한 최대 균형 이진 하위 문자열 분할을 찾기 위해 하향식 접근 방식을 취합니다.

하향식 접근 방식 또는 더 일반적으로 동적 프로그래밍으로 알려진 방법을 사용합니다. 동적 프로그래밍의 가장 큰 장점은 단순 재귀의 효율성이 향상된다는 것입니다. 동적 프로그래밍을 사용하면 동일한 입력에 대한 반복 호출이 포함된 재귀 솔루션을 최적화할 수 있습니다. 나중에 하위 문제의 결과를 다시 계산하지 않으려면 해당 결과를 저장하는 것이 좋습니다. 이 간단한 최적화를 통해 시간 복잡도는 다항식에서 지수함수로 감소됩니다.

알고리즘

최대 비용 K로 가능한 최대 균형 이진 하위 문자열 분할을 찾는 알고리즘은 다음과 같습니다.

  • 단계 - 시작

  • 2단계 - 2차원 행렬 m

  • 정의
  • 3단계 - 가능한 최대 균형 이진 하위 문자열 분할을 찾는 함수를 정의합니다.

  • 4단계 − 0의 개수를 계산하는 정수 변수 zeroCount와 1의 개수를 계산하는 oneCount를 각각 정의합니다

  • 5단계 − 정수 변수 cntSplits를 정의하여 분할 횟수를 계산합니다

  • 6단계 - 주어진 배열 a

  • 를 반복합니다.
  • 7단계 − 0의 개수가 1의 개수와 같은지 확인한 다음 가능한 최대값을 저장하세요

  • 8단계 - 인덱스가 0 위치에 있다고 가정하고 1인지 0인지 확인한 다음 개수를 늘립니다.

  • 9단계 − 1의 개수와 0의 개수가 같지 않으면 cntSplits를 0으로 설정합니다.

  • 10단계 - 결과 값을 행렬에 저장합니다.

  • 11단계 − 원하는 결과를 인쇄하세요

  • 12단계 − 중지

예: C 프로그램

이것은 최대 k의 비용으로 가능한 최대 균형 이진 하위 문자열 분할을 찾기 위한 위 알고리즘의 C 프로그램 구현입니다.

으아악

출력

으아악

결론

마찬가지로 최대 K의 비용이 드는 균형 잡힌 이진 하위 문자열 분할을 찾을 수 있습니다.

이 문서에서는 최대 비용 K로 가능한 최대 균형 이진 하위 문자열 분할을 찾는 프로그램을 얻는 문제를 다룹니다.

C 프로그래밍 코드는 최대 K의 비용으로 가능한 가장 큰 균형 이진 하위 문자열 분할을 찾는 알고리즘과 함께 여기에 제공됩니다.

위 내용은 최대 k를 취하는 가능한 최대 균형 이진 하위 문자열 분할의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿