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

Python을 사용하여 합계가 대상과 같은 비중첩 하위 배열의 최대 수를 찾는 프로그램

<시간/>

배열 num과 target이라는 다른 값이 있다고 가정합니다. 이제 서로 다른 하위 배열의 값 합계가 대상과 같도록 비어 있지 않은 비중첩 하위 배열의 최대 수를 찾아야 합니다.

따라서 입력이 nums =[3,2,4,5,2,1,5] target =6과 같으면 두 개의 하위 배열 [2,4] 및 [1,5]가 있으므로 출력은 2가 됩니다. 합은 6과 같습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • t :=단일 요소가 0인 새 집합

  • 온도 :=0

  • 답변:=0

  • 숫자로 된 각 i에 대해 수행

    • 온도 :=온도 + i

    • 이전 :=임시 - 대상

    • prev가 t에 있으면

      • ans :=ans + 1

      • t :=단일 요소 temp가 있는 새 세트

    • 그렇지 않으면

      • t에 temp를 삽입하십시오

  • 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(nums, target):
   t = set([0])
   temp = 0
   ans=0
   for i in nums:
      temp += i
      prev = temp-target
      if prev in t:
         ans += 1
         t = set([temp])
      else:
         t.add(temp)
   return ans
nums = [3,2,4,5,2,1,5]
target = 6
print(solve(nums, target))

입력

"poput","vwput",9

출력

2