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

ตรวจสอบว่าช่วงเวลาสองช่วงซ้อนทับกันระหว่างชุดของช่วงเวลาที่กำหนดใน C++ . หรือไม่


สมมติว่าเราได้รับชุดของช่วงเวลาที่ประกอบด้วยค่า (time1, time2) โดยที่ time1 แสดงถึงเวลาเริ่มต้น และ time2 แสดงถึงเวลาสิ้นสุดของเหตุการณ์ งานของเราคือตรวจสอบว่าช่วงเวลาเหล่านี้ทับซ้อนช่วงเวลาอื่นในชุดนี้หรือไม่ หากช่วงเวลาใดคาบเกี่ยวกัน เราจะคืนค่าผลลัพธ์เป็น True ไม่เช่นนั้นเราจะคืนค่าเป็น False

ดังนั้น หากอินพุตเป็นเหมือน [(4,7), (5,11), (7,11), (5,8)] ผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เรียงลำดับรายการ inputArr
  • สำหรับฉันในช่วง 1 ถึงขนาดของ inputArr ทำ
    • ถ้า inputArr [i - 1].time2> inputArr[i].time1 แล้ว
      • คืนค่า True
    • คืนค่าเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include ใช้ namespace std;class IntervalClass {public:int time1, time2;};bool comparison(IntervalClass inst1, IntervalClass inst2){ return (inst1.time1  &inputArr){ ขนาด int =inputArr.size(); sort(inputArr.begin(), inputArr.end(), เปรียบเทียบ); สำหรับ (int i =1; i  inputArr[i].time1) คืนค่าจริง; return false;}int main(){ vector inputArr ={{4,7},{5,11},{7,11},{5,8}}; ขนาด int =sizeof(inputArr) / sizeof(inputArr[0]); ศาล <<แก้ (inputArr);}

อินพุต

<ล่วงหน้า>{{4,7},{5,11},{7,11},{5,8}}

ผลลัพธ์

1