ধরুন আমাদের রেস্তোরাঁর একটি অ্যারে আছে যেখানে রেস্তোরাঁ আছে [i] আছে [idi, ratingi, vegan friendly, pricei, distancei]। আমাদের তিনটি ফিল্টার ব্যবহার করে রেস্টুরেন্ট ফিল্টার করতে হবে।
-
ভেগান-ফ্রেন্ডলি ফিল্টারটি হয় সত্য (অর্থাৎ আমাদের শুধুমাত্র ভেগান-বান্ধব রেস্তোরাঁগুলিকে সত্যে সেট করা উচিত) বা মিথ্যা (অর্থাৎ আমরা যে কোনও রেস্তোরাঁ অন্তর্ভুক্ত করতে পারি)।
-
maxPrice ফিল্টার এবং সর্বোচ্চ দূরত্ব ফিল্টার যা রেস্তোরাঁর মূল্য এবং দূরত্বের সর্বোচ্চ মান যা আমাদের যথাক্রমে বিবেচনা করা উচিত।
ফিল্টার করার পরে আমাদের রেস্তোরাঁর আইডিগুলির অ্যারে খুঁজে বের করতে হবে, সর্বোচ্চ থেকে সর্বনিম্ন রেটিং দ্বারা অর্ডার করা হয়েছে৷ একই রেটিং সহ রেস্তোরাঁগুলির জন্য, তাদের আইডি দ্বারা হ্রাস ক্রমে অর্ডার করুন৷ সরলতার জন্য নিরামিষাশী বন্ধুত্বপূর্ণ এবং নিরামিষাশী-বান্ধব মান নিন যখন এটি সত্য হয় 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, rating=4, veganFriendly=1, price=40, দুরত্ব=10]
রেস্তোরাঁ 2 [id=2, rating=8, veganFriendly=0, price=50, দূরত্ব=5]
রেস্তোরাঁ 3 [id=3, রেটিং=8, নিরামিষাশী=1, মূল্য=30, দূরত্ব=4]
রেস্তোরাঁ 4 [id=4, rating=10, veganFriendly=0, price=10, দূরত্ব=3]
রেস্তোরাঁ 5 [id=5, রেটিং=1, veganFriendly=1, মূল্য=15, দূরত্ব=1]
veganFriendly =1, maxPrice =50 এবং maxDistance =10 দিয়ে রেস্তোরাঁগুলি ফিল্টার করার পরে আমাদের কাছে রেস্তোরাঁ 3, রেস্তোরাঁ 1 এবং রেস্তোরাঁ 5 (হ্রাসমান ক্রমে রেটিং অনুসারে অর্ডার করা হয়েছে) আছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
temp, n :=রেস্তোরাঁর অ্যারের আকার
নামে একটি ম্যাট্রিক্সকে সংজ্ঞায়িত করুন -
0 থেকে n – 1
রেঞ্জের i জন্য-
যদি vf =0 বা r[i, 2] =vf এবং r[i, 3] <=mp এবং r[i, 4] <=md, তাহলে
-
টেম্পে [r[i, 0], r[i, 1]] ঢোকান
-
-
-
রেটিং এর উপর ভিত্তি করে রেস্তোরাঁগুলিকে ক্রমানুসারে সাজান
-
ret
নামে একটি অ্যারে তৈরি করুন -
আমি 0 থেকে টেম্পের আকারের মধ্যে
-
ret এ temp[i, 0] ঢোকান
-
-
রিটার্ন রিটার্ন
উদাহরণ (C++)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#includeনেমস্পেস ব্যবহার করে std;void print_vector(vector v){ cout <<"["; for(int i =0; i a, ভেক্টর b){ if(b[1] !=a[1])রিটার্ন a[ 1]> b[1]; ফেরত a[0]> b[0]; } ভেক্টর ফিল্টার রেস্তোরাঁ(ভেক্টর<ভেক্টর >&r, int vf, int mp, int md) { ভেক্টর <ভেক্টর > টেম্প; 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]