สมมติว่าเราได้รับอาร์เรย์ที่มีองค์ประกอบจำนวนเต็ม เราต้องค้นหาว่าค่าในอาร์เรย์สามารถจัดเรียงตามลำดับที่ไม่ลดลงได้หรือไม่ถ้าเราสามารถดำเนินการสลับได้เพียงครั้งเดียว ถ้าเป็นไปได้ เราว่าทำได้ ไม่อย่างนั้นไม่
ดังนั้น หากอินพุตเป็นเหมือน input_list =[7, 8, 12, 10, 11, 9] ผลลัพธ์จะเป็น “สามารถทำได้”
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- temp_list :=สำเนาของรายการ input_list
- เรียงลำดับรายการ temp_list
- swap_count :=0
- สำหรับ i ในช่วง 0 ถึงขนาดของ input_list ให้ทำ
- ถ้า input_list[i] ไม่เหมือนกับ temp_list[i] แล้ว
- swap_count :=swap_count + 1
- ถ้า input_list[i] ไม่เหมือนกับ temp_list[i] แล้ว
- ถ้า swap_count เหมือนกับ 0 หรือ swap_count เหมือนกับ 2 แล้ว
- คืนค่า True
- มิฉะนั้น
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
from copy import deepcopy def solve(input_list): temp_list = deepcopy(input_list) temp_list.sort() swap_count = 0 for i in range(len(input_list)): if input_list[i] != temp_list[i]: swap_count += 1 if swap_count == 0 or swap_count == 2: print("Can be done") else: print("Can't be done") input_list = [7, 8, 12, 10, 11, 9] solve(input_list)
อินพุต
[7, 8, 12, 10, 11, 9]
ผลลัพธ์
Can be done