สมมติว่าเรามีหลอดไฟ n ดวงในห้องหนึ่ง หลอดไฟเหล่านี้มีหมายเลขตั้งแต่ 0 ถึง n-1 เราต้องเรียงเป็นแถวจากซ้ายไปขวา เริ่มแรก หลอดไฟทั้งหมดจะปิด (0-state) เราต้องได้รับการกำหนดค่าที่แสดงโดยอาร์เรย์เป้าหมายที่กำหนด 't' โดยที่ t[i] คือ '1' หากหลอดไฟ ith เปิดอยู่และ '0' หากปิดอยู่ นอกจากนี้เรายังมีสวิตช์เพื่อพลิกสถานะของหลอดไฟ และการดำเนินการพลิกถูกกำหนดดังนี้ -
-
เลือกดัชนีหลอดไฟ i.
-
พลิกแต่ละหลอดจากดัชนี i เป็นดัชนี n - 1
เราต้องหาจำนวนพลิกขั้นต่ำที่จำเป็นในการสร้างเป้าหมาย
ดังนั้น หากอินพุตเป็น t ="0101" เอาต์พุตจะเป็น 3 หากเราเริ่มจากหลอดที่สอง การกำหนดค่าถัดไปจะเป็น "0111" จากนั้นจากที่สาม จะเป็น "0100" จากนั้นพลิกกลับเป็นครั้งสุดท้าย หลอดไฟเพื่อทำเป็น "0101"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
นับ :=0
-
x :='0'
-
สำหรับแต่ละ i ใน t ทำ
-
ถ้าฉันไม่เหมือน x แล้ว
-
นับ :=นับ + 1
-
x :=ผม
-
-
-
จำนวนคืน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def Solve(t):count =0 x ='0' for i in t:if i !=x:count +=1 x =i return countt ="0101"print(solve(t))ก่อน>อินพุต
"0101"ผลลัพธ์
3