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

모든 작업을 확인하는 프로그램은 Python에서 주어진 서버 코어를 사용하여 실행할 수 있는지 여부

<시간/>

코어와 작업이라는 두 개의 목록이 있다고 가정합니다. cores[i]는 i번째 서버에서 사용 가능한 코어 수를 나타냅니다. 그리고 task[i]는 해당 작업을 실행하는 데 필요한 코어 수를 나타냅니다. 각 작업은 하나의 서버에서만 실행되어야 합니다. 그리고 서버에는 실행할 여러 작업이 있을 수 있습니다. 주어진 코어로 모든 작업을 실행할 수 있는지 여부를 확인해야 합니다.

따라서 입력이 cores =[10, 7] tasks =[7, 3, 2, 2, 1]과 같으면 출력은 True가 됩니다. 왜냐하면 task[0]과 tasks[1]을 먼저 넣을 수 있기 때문입니다. 코어 10이 있는 서버, 나머지 작업은 코어 7이 있는 두 번째 서버에 있습니다.

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

  • solve() 함수를 정의합니다. 여기에는 코어, 작업이 필요합니다.
  • 작업 세트가 비어 있으면
    • 참 반환
  • 0 ~ 코어 크기 - 1 범위의 i에 대해
    • 코어[i]>=작업[0]이면
      • 코어[i] :=코어[i] - 작업[0]
    • solve(코어, 첫 번째 작업을 제외한 작업 목록)가 true이면
      • 참 반환
    • 코어[i] :=코어[i] + 작업[0]
  • 거짓을 반환

예시

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

def solve(cores, tasks):
   if not tasks:
      return True

   for i in range(len(cores)):
      if cores[i] >= tasks[0]:
         cores[i] -= tasks[0]
         if solve(cores, tasks[1:]):
            return True
         cores[i] += tasks[0]
   return False

cores = [10, 7]
tasks = [7, 3, 2, 2, 1]
print(solve(cores, tasks))

입력

[10, 7], [7, 3, 2, 2, 1]

출력

True