>백엔드 개발 >C++ >2* 최소값이 최대값보다 크도록 양쪽에서 가장 작은 요소를 제거하는 C++ 프로그램

2* 최소값이 최대값보다 크도록 양쪽에서 가장 작은 요소를 제거하는 C++ 프로그램

PHPz
PHPz앞으로
2023-08-28 08:09:141252검색

2* 최소값이 최대값보다 크도록 양쪽에서 가장 작은 요소를 제거하는 C++ 프로그램

2*min이 max보다 큰 방식으로 정수 목록의 양쪽에서 요소를 제거하는 문제가 있습니다.

으아아아

무차별 대입 방법을 사용할 수 있습니다. 가능한 모든 만족을 시도하고 2*min > max 조건을 만족하는 가장 긴 하위 배열을 찾을 수 있습니다. 또한 동적 프로그래밍 방법을 사용하여 가능한 모든 과도하고 원치 않는 하위 배열 조합을 시도할 수 있습니다.

예(벡터 ADT 사용)

"[250, 10, 11, 12, 19, 200]"과 같은 배열이 있다고 가정해 보겠습니다. 최상의 솔루션을 얻으려면 요소 [250, 200]을 제거하여 최소값이 10이고 최대값이 19인 배열 [10, 11, 12, 19]를 형성해야 합니다. 따라서 2*10 > 19입니다. 배열에서 인쇄 중이므로 출력은 2입니다.

아래는 최소값의 두 배가 최대값보다 크도록 배열에서 최소 요소 수를 제거하는 방법을 설명하는 C++ 프로그램입니다. -

으아아아

출력

으아아아

예(벡터 ADT를 사용하지 않음)

다음은 벡터 ADT를 사용하지 않고 최소값의 두 배가 최대값보다 크도록 배열에서 최소 요소 수를 제거하는 방법을 설명하는 C++ 프로그램입니다. -

으아아아

출력

으아아아

결론

여기에서는 무차별 대입 방식을 사용하여 가장 긴 하위 배열을 찾습니다. 다른 가능한 솔루션에는 양쪽에서 요소를 반복적으로 팝하여 가능한 모든 하위 배열을 확인하는 방법과 다른 방법이 포함될 수 있습니다. 그럼에도 불구하고 구현은 노동 집약적이며 덜 최적화되어 있습니다. 여기서 시간 복잡도는 이미 모든 하위 배열을 반복했기 때문에 O(n^2)입니다.

위 내용은 2* 최소값이 최대값보다 크도록 양쪽에서 가장 작은 요소를 제거하는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제