Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra tất cả các tác vụ có thể được thực thi bằng cách sử dụng lõi máy chủ nhất định hay không bằng Python

Giả sử chúng ta có hai danh sách, chúng là lõi và nhiệm vụ. Các lõi [i] cho biết số lõi có sẵn trong máy chủ thứ i. Và nhiệm vụ [i] cho biết số lõi cần thiết để thực hiện tác vụ đó. Mỗi tác vụ chỉ được chạy trong một máy chủ. Và một máy chủ có thể có nhiều tác vụ để chạy. Chúng tôi phải kiểm tra xem có thể chạy tất cả các tác vụ với các lõi đã cho hay không.

Vì vậy, nếu đầu vào giống như lõi =[10, 7] nhiệm vụ =[7, 3, 2, 2, 1], thì đầu ra sẽ là Đúng, vì chúng ta có thể đặt nhiệm vụ [0] và nhiệm vụ [1] vào trước. máy chủ có lõi 10 và các tác vụ còn lại trên máy chủ thứ hai có lõi 7.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một hàm giải quyết (). Điều này sẽ lấy lõi, nhiệm vụ
  • nếu bộ nhiệm vụ trống, thì
    • trả về True
  • đối với tôi trong phạm vi từ 0 đến kích thước lõi - 1, thực hiện
    • if core [i]> =task [0], then
      • lõi [i]:=lõi [i] - nhiệm vụ [0]
    • nếu giải quyết (lõi, danh sách nhiệm vụ ngoại trừ tác vụ đầu tiên) là true, thì
      • trả về True
    • lõi [i]:=lõi [i] + nhiệm vụ [0]
  • trả về Sai

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

True