Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนหน้าขั้นต่ำที่จะเปิดเพื่อไปยังหน้าที่ต้องการโดยใช้ C ++


คำชี้แจงปัญหา

ให้หนังสือจำนวน N หน้า ภารกิจคือการคำนวณจำนวนหน้าขั้นต่ำที่จะได้หน้าที่ต้องการ K.

  • เราสามารถเริ่มพลิกหน้าจากด้านหน้าของหนังสือ (เช่น จากหน้า 1) หรือจากด้านหลังของหนังสือ (เช่น หมายเลขหน้า N)

  • แต่ละหน้ามีสองด้าน ด้านหน้าและด้านหลัง ยกเว้นหน้าแรกที่มีเฉพาะด้านหลังและหน้าสุดท้ายซึ่งอาจมีเฉพาะด้านหลังขึ้นอยู่กับจำนวนหน้าของหนังสือ

ถ้า N =5 และ K =4 เราต้องเปิดหน้าขั้นต่ำ 1 หน้า −

  • หากเราเริ่มพลิกหน้าจากด้านหน้า จะต้อง 2 รอบ (1) -> (2, 3) -> (4,5)

  • หากเราเริ่มพลิกหน้าจากด้านหลัง (4, 5) ต้องเปิดหน้า 1 รอบ =1

ดังนั้น จำนวนหน้าขั้นต่ำที่เปลี่ยน =1

อัลกอริทึม

ใช้สูตรด้านล่างเพื่อคำนวณผลลัพธ์สุดท้าย -

<ก่อน>1. ถ้า K เป็นเลขคู่ ระยะทางด้านหน้า =(K – 0)/2 และระยะทางด้านหลัง =(N – 1 – K)/22 ถ้า K เป็นเลขคี่ ระยะหน้า =(K – 1)/2 และระยะถอยหลัง =(N – K)/2

ตัวอย่าง

#include #include <อัลกอริทึม>โดยใช้เนมสเปซ std;int getMinPageTurns(int n, int k){ if (n % 2 ==0) { ++n; } return min((k + 1) / 2, (n -k + 1) / 2);}int main(){ int n =5, k =4; cout <<"ต้องเปลี่ยนหน้า =" < 

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -

ต้องเปลี่ยนหน้า =1