Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าอาร์เรย์สามารถแบ่งออกเป็นสองอาร์เรย์ย่อยได้หรือไม่ โดยที่ความแตกต่างที่แน่นอนคือ Ks ใน Python


สมมติว่าเราได้รับอาร์เรย์ "input_list" ที่มีตัวเลขจำนวนเต็ม ปัญหาสำหรับเราคือการตรวจสอบว่าอาร์เรย์ที่กำหนดสามารถแบ่งออกเป็นสองส่วนได้หรือไม่ โดยที่ผลต่างของผลรวมของสองส่วนเท่ากับจำนวน n จะมีการแจ้งหมายเลข n ไว้ล่วงหน้า

ดังนั้น หากอินพุตเป็นเหมือน input_list=[9,2,5,6], n =0 ผลลัพธ์จะเป็น “ที่เป็นไปได้”

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • list_total :=ผลรวมของค่า input_list
  • ถ้า (list_total - n) mod 2 เหมือนกับ 1 แล้ว
    • ส่งคืน "เป็นไปไม่ได้"
  • val :=(list_total - n) / 2
  • temp_sum :=0;
  • สำหรับ i ในช่วง 0 ถึงขนาดของ input_list ให้ทำ
    • temp_sum :=temp_sum + input_list[i]
    • ถ้า temp_sum เหมือนกับ val แล้ว
      • ส่งคืน "เป็นไปได้"
  • ส่งคืน "เป็นไปไม่ได้"

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

def solve(input_list,n):
   list_total = sum(input_list)
   if (list_total - n) % 2 == 1:
      return "Not Possible"
   val = (list_total - n) / 2
   temp_sum = 0;
   for i in range (0,len(input_list)):
      temp_sum += input_list[i]
      if (temp_sum == val):
         return "Possible"
   return "Not Possible"
input_list= [9,2,5,6]
n = 0
print(solve(input_list, n))

อินพุต

[9,2,5,6], 0

ผลลัพธ์

Possible