nums라고 하는 양수 목록이 있다고 가정합니다. 이제 a ≤ b인 두 값 a와 b를 제거하고 a
따라서 입력이 nums =[2, 4, 5]와 같으면 출력은 1이 됩니다. 왜냐하면 4와 5를 선택한 다음 1을 다시 삽입하여 [2, 1]을 얻을 수 있기 때문입니다. 이제 2와 1을 선택하여 [1]을 받으세요.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- s :=숫자로 표시되는 모든 요소의 합계
- f() 함수를 정의합니다. 이 시간이 걸립니다.
- i>=nums의 크기이면
- 반환
- n :=숫자[i]
- s - 2 * n <0이면
- f(i + 1, s)를 반환
- f(i + 1, s - 2 * n) 및 f(i + 1, s)의 최소값 반환
- 메인 메소드에서 f(0, s)를 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(nums): s = sum(nums) def f(i, s): if i >= len(nums): return s n = nums[i] if s - 2 * n < 0: return f(i + 1, s) return min(f(i + 1, s - 2 * n), f(i + 1, s)) return f(0, s) nums = [2, 4, 5] print(solve(nums))
입력
[2, 4, 5]
출력
1