สมมติว่าเรามีร้านอาหารมากมายที่ร้านอาหาร[i]มี [idi, Ratingi, เป็นมิตรกับมังสวิรัติ, pricei, Distancei] เราต้องกรองร้านอาหารโดยใช้สามตัวกรอง
-
ตัวกรองที่เป็นมิตรกับวีแก้นจะเป็นจริง (หมายความว่าเราควรรวมเฉพาะร้านอาหารที่ตั้งค่าให้เหมาะกับวีแก้นเป็นจริงเท่านั้น) หรือเท็จ (หมายความว่าเราสามารถรวมร้านอาหารใดก็ได้)
-
ตัวกรอง maxPrice และตัวกรองระยะทางสูงสุด ซึ่งเป็นค่าสูงสุดสำหรับราคาและระยะทางของร้านอาหารที่เราควรพิจารณาตามลำดับ
เราต้องหาอาร์เรย์ของรหัสร้านอาหารหลังจากกรองแล้ว โดยเรียงลำดับจากคะแนนสูงสุดไปต่ำสุด สำหรับร้านอาหารที่มีคะแนนเท่ากัน ให้สั่งโดย id ตามลำดับที่ลดลง เพื่อความเรียบง่ายที่เป็นมิตรกับมังสวิรัติและเป็นมิตรกับมังสวิรัติ ให้ใส่ค่า 1 เมื่อเป็นจริงและ 0 เมื่อเป็นเท็จ
ดังนั้นหากข้อมูลเข้าเหมือนร้านอาหาร −
[[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[ 5,1,1,15,1]], veganFriendly =1, maxPrice =50, maxDistance =10 จากนั้นผลลัพธ์จะเป็น [3,1,5] คำอธิบายจะเป็นดังนี้ −
ร้านอาหาร 1 [id=1, เรตติ้ง=4, วีแกนFriendly=1, ราคา=40, ระยะทาง=10]
ร้านอาหาร 2 [id=2, คะแนน=8, วีแก้นFriendly=0, ราคา=50, ระยะทาง=5]
ร้านอาหาร 3 [id=3, คะแนน=8, วีแก้นFriendly=1, ราคา=30, ระยะทาง=4]
ร้านอาหาร 4 [id=4, เรตติ้ง=10, วีแก้นFriendly=0, ราคา=10, ระยะทาง=3]
ร้านอาหาร 5 [id=5, คะแนน=1, วีแก้นFriendly=1, ราคา=15, ระยะทาง=1]
หลังจากกรองร้านอาหารด้วย veganFriendly =1 แล้ว maxPrice =50 และ maxDistance =10 เรามีร้านที่ 3 ร้านอาหาร 1 และร้านที่ 5 (เรียงตามลำดับการลดลง)
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดเมทริกซ์ที่เรียกว่า temp, n :=size of restaurants array
-
สำหรับฉันอยู่ในช่วง 0 ถึง n – 1
-
ถ้า vf =0 หรือ r[i, 2] =vf และ r[i, 3] <=mp และ r[i, 4] <=md แล้ว
-
ใส่ [r[i, 0], r[i, 1]] ลงในอุณหภูมิ
-
-
-
จัดเรียงร้านอาหารตามลำดับที่ลดลงตามการให้คะแนน
-
สร้างอาร์เรย์ที่เรียกว่า ret
-
สำหรับผมอยู่ในช่วง 0 ถึงขนาดของอุณหภูมิ
-
ใส่ temp[i, 0] ลงใน ret
-
-
รีเทิร์น
ตัวอย่าง (C++)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#includeใช้เนมสเปซ std;void print_vector(vector v){ cout <<"["; for(int i =0; i a, vector b){ if(b[1] !=a[1]) return a[ 1]> ข[1]; ส่งคืน a[0]> b[0]; } vector filterRestaurants(vector >&r, int vf, int mp, int md) { vector > ชั่วคราว; int n =r.size(); for(int i =0; i ret; for(int i =0; i > v ={{1,4,1,40,10},{2,8,0,50,5},{3,8,1,30, 4},{4,10,0,10,3},{5,1,1,15,1}}; โซลูชัน ob; print_vector(ob.filterRestaurants(v, 1, 50, 10));}
อินพุต
<ก่อน>[[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3 ],[5,1,1,15,1]]15010ผลลัพธ์
[3,1,5]