আমি একটি নির্দিষ্ট বাজেট এবং সংমিশ্রণের সর্বাধিক সীমা প্রদত্ত তারার সংখ্যা সর্বাধিক করতে দেখছি।
উদাহরণ প্রশ্ন:
500 ইউরোর বাজেট সহ, কেবলমাত্র সর্বাধিক অনুমোদিত অনুমোদিত রেস্তোরাঁ বা তার চেয়ে কম পরিদর্শন করা, সর্বাধিক নক্ষত্রের খাবার এবং সংগ্রহ করা।
আমি একটি দক্ষ অ্যালগরিদম লিখতে চাই, এটি সম্ভাব্য 10 মিলিয়ন রেস্তোঁরাগুলির জন্য 1 মিলিয়ন রেস্তোঁরাগুলির উদাহরণগুলি প্রক্রিয়া করতে পারে।
দ্রষ্টব্য, আমি গতকাল যে প্রশ্নটি জিজ্ঞাসা করেছি তার একটি ক্রস পোস্ট এটি: জাভা: একটি ক্ষেত্রের উপর ভিত্তি করে অবজেক্টের একটি বৃহত তালিকার সর্বাধিক দক্ষ সংমিশ্রণ পান
নীচের সমাধানটি r8
রেস্তোঁরাগুলিতে প্রতি তারা 15 ডলার অর্পণ করবে , যার অর্থ তালিকা তৈরি করার সময় এটি প্রথমে তালিকায় রাখে এবং বাকী 70 with এর সাথে এটি আরও 2 টি তারা পেতে পারে মোট 4 তারা দেয়। তবে, যদি r8
রেস্তোঁরাটি এড়ানো যথেষ্ট স্মার্ট হয় (যদিও এটি তারকা অনুপাতের তুলনায় সেরা ডলার) r1
রেস্তোঁরাটি বাজেটের জন্য আসলে আরও ভাল পছন্দ হবে, কারণ এটি 100 $ ব্যয় এবং 5 তারা stars
সমস্যার সমাধান এবং বর্তমান সমাধানকে কেউ মারতে পারে?
import itertools
class Restaurant():
def __init__(self, cost, stars):
self.cost = cost
self.stars = stars
self.ratio = cost / stars
def display(self):
print("Cost: $" + str(self.cost))
print("Stars: " + str(self.stars))
print()
r1 = Restaurant(100, 5)
r2 = Restaurant(140, 3)
r3 = Restaurant(90, 4)
r4 = Restaurant(140, 3)
r5 = Restaurant(120, 4)
r6 = Restaurant(60, 1)
r7 = Restaurant(40, 1)
r8 = Restaurant(30, 2)
r9 = Restaurant(70, 2)
r10 = Restaurant(250, 5)
print()
print("***************")
print("** Unsorted: **")
print("***************")
print()
restaurants = [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10]
for restaurant in restaurants:
print(restaurant.ratio, restaurant.stars)
print()
print("***************")
print("** Sorted: **")
print("***************")
print()
sorted_restaurants = sorted(restaurants, key = lambda x: x.ratio, reverse = True)
for restaurant in sorted_restaurants:
print(restaurant.ratio, restaurant.stars)
print()
print("*********************")
print("** Begin Rucksack: **")
print("*********************")
print()
max = 5
budget = 100
spent = 0
quantity = 0
rucksack = []
for i in itertools.count():
if len(rucksack) >= max or i == len(sorted_restaurants):
break
sorted_restaurants[i].display()
if sorted_restaurants[i].cost + spent <= budget:
spent = spent + sorted_restaurants[i].cost
rucksack.append(sorted_restaurants[i])
print("Total Cost: $" + str(sum([x.cost for x in rucksack])))
print("Total Stars: " + str(sum([x.stars for x in rucksack])))
print()
print("*****************")
print("** Final List: **")
print("*****************")
print()
for restaurant in rucksack:
restaurant.display()
budget
= সর্বোচ্চ রুকস্যাক ওজন কেজি, max
ন্যাপস্যাকটি ধরে রাখতে পারে stars
এমন আইটেমের সংখ্যা cost
= আইটেমের কিছু মূল্য এবং কেজি আইটেমের ওজন
r8
রেস্তোঁরাগুলিতে প্রতি তারা 15% নির্ধারণ করে , যার অর্থ তালিকাটি তৈরি করার সময়, এটি প্রথমে তালিকায় রাখে এবং বাকী 70 with এর সাথে এটি আরও 2 টি তারা পেতে পারে। যাইহোক, যদি এটি এড়াতে যথেষ্ট স্মার্ট হয় (যদিও এটি তারকা অনুপাতের তুলনায় সেরা ডলার, r1
রেস্তোঁরাটি বাজেটের জন্য আসলে আরও ভাল পছন্দ হবে, কারণ এটি 100 $ ব্যয় এবং 5 তারা