Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

주어진 연산으로 목록을 줄이고 파이썬에서 가장 작은 나머지 숫자를 찾는 프로그램

<시간/>

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