สมมติว่าเราได้รับอาร์เรย์ "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