คำชี้แจงปัญหา
- มีหลายจุดในพื้นที่สองมิติที่ต้องเข้าชมในลำดับที่เฉพาะเจาะจง
- เส้นทางจากจุดหนึ่งไปยังอีกจุดหนึ่งจะถูกเลือกให้เป็นเส้นทางที่สั้นที่สุดเสมอ และส่วนของเส้นทางจะถูกจัดแนวด้วยเส้นกริดเสมอ
- เราจะได้รับเส้นทางสำหรับการเยี่ยมชมจุดต่างๆ เราจำเป็นต้องบอกจำนวนจุดขั้นต่ำที่จำเป็นในการสร้างเส้นทางที่กำหนด
อัลกอริทึม
<ก่อน>1. เราสามารถแก้ปัญหานี้ได้โดยสังเกตรูปแบบการเคลื่อนไหวเมื่อไปที่จุดแวะ2 หากเราต้องการใช้เส้นทางที่สั้นที่สุดจากจุดหนึ่งไปยังอีกจุดหนึ่ง เราจะเคลื่อนไปในทิศทางใดทิศทางหนึ่งหรือสูงสุดสองทิศทางตัวอย่าง
#includeใช้เนมสเปซ std;int getMinStops (เส้นทางสตริง) { int n =path.length (); แผนที่<ถ่าน int> directionMap; int หยุด =1; สำหรับ (int i =0; i เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้
ผลลัพธ์
หยุดขั้นต่ำ =3