แรงบันดาลใจสำหรับปริศนากอล์ฟรหัสนี้คือปัญหาของสะพานและคบเพลิงซึ่งdคนที่เริ่มต้นของสะพานทั้งหมดจะต้องข้ามมันในปริมาณที่น้อยที่สุดของเวลา
จับได้ว่ามากที่สุดสองคนสามารถข้ามในเวลาเดียวกันมิฉะนั้นสะพานจะบี้ภายใต้น้ำหนักของพวกเขาและกลุ่มมีเพียงการเข้าถึงหนึ่งไฟฉายซึ่งจะต้องดำเนินการข้ามสะพาน
แต่ละคนในตัวต่อทั้งหมดมีเวลาที่กำหนดที่จะใช้ในการเดินข้ามสะพาน ถ้าคนสองคนข้ามกันทั้งคู่จะช้าเท่ากับคนที่ช้าที่สุด
ไม่มีคนกำหนดจำนวนคนที่ต้องข้ามสะพาน โซลูชันของคุณต้องทำงานเพื่อค่าใด ๆ ของd d
คุณไม่จำเป็นต้องใช้อินพุตมาตรฐานสำหรับปัญหานี้ แต่เพื่ออธิบายปัญหาฉันจะใช้รูปแบบอินพุตและเอาต์พุตต่อไปนี้สำหรับคำอธิบาย หมายเลขแรก, d , คือจำนวนคนที่จุดเริ่มต้นของสะพาน จากนั้นรหัสจะสแกนหาตัวเลขdแต่ละอันแทนความเร็วของบุคคล
รหัสเอาท์พุทจะเป็นจำนวนเวลาที่น้อยที่สุดที่ต้องใช้ในการข้ามทุกคนจากจุดเริ่มต้นของสะพานไปยังจุดสิ้นสุดของสะพานขณะที่ปฏิบัติตามเกณฑ์ที่อธิบายไว้ก่อนหน้านี้
ต่อไปนี้เป็นกรณีการป้อนข้อมูลและกรณีการส่งออกและคำอธิบายสำหรับกรณีการป้อนข้อมูลครั้งแรก ขึ้นอยู่กับคุณว่าจะรับอัลกอริทึมจากข้อมูลนี้เพื่อแก้ปัญหาในจำนวนไบต์ที่น้อยที่สุดของโค้ด
อินพุต
4
1 2 5 8
เอาท์พุต
15
ในการเข้าถึงผลลัพธ์นี้ผู้คนจะต้องข้ามด้วยวิธีต่อไปนี้
A and B cross forward (2 minutes)
A returns (1 minute)
C and D cross forward (8 minutes)
B returns (2 minutes)
A and B cross forward (2 minutes)
นี่คืออีกกรณีทดสอบที่จะนำทางคุณไปตลอดทาง
อินพุต
5
3 1 6 8 12
เอาท์พุต
29
กฎ:
- สมมติว่าอินพุตจะไม่ถูกจัดเรียงและคุณต้องทำด้วยตัวเอง (ถ้าคุณต้องการ)
- จำนวนคนในตัวต่อไม่ได้รับการแก้ไขที่ 4 (N> = 1)
- ทุกกลุ่มและบุคคลข้ามจะต้องมีคบเพลิง มีไฟฉายเดียวเท่านั้น
- แต่ละกลุ่มจะต้องประกอบด้วยมากที่สุดเพียง 2 คน!
- ไม่คุณไม่สามารถกระโดดจากสะพานและว่ายน้ำไปยังอีกฝั่งได้ ไม่มีเทคนิคอื่น ๆ เช่นนี้;)
1 4 5 6 7มีปัญหาที่คล้ายกัน 25 กับ 26
N >= 2ผู้คนเท่านั้น(หมายถึงแปลกมากที่มันเป็นงานพิเศษที่จะจัดการกับกรณีเล็ก ๆ น้อย ๆ ของ "1 คนจำเป็นต้องข้าม") ดังนั้นการชี้แจงในประเด็นนี้จะดีมาก ขอบคุณล่วงหน้า.
1 3 4 5นี้ซึ่งควรกลับ 14 ไม่ใช่ 15