کوله‌پشتی

کوله‌پشتی

متوسط

مقدمه

باب یک دزد است. پس از ماه‌ها برنامه‌ریزی دقیق، سرانجام موفق می‌شود به سیستم‌های امنیتی یک فروشگاه شیک نفوذ کند.

روبه‌روی او اقلام زیادی قرار دارد که هرکدام ارزش و وزنی دارند. باب با کمال میل همه‌ی اقلام را برمی‌داشت، اما کوله‌پشتی‌اش فقط می‌تواند وزن محدودی را در خود جای دهد. باب باید با دقت بررسی کند که کدام اقلام را بردارد تا ارزش کل انتخابش به بیشترین مقدار برسد.

دستورالعمل‌ها

وظیفه‌ی شما این است که مشخص کنید کدام عنصرها را بردارد تا با توجه به ظرفیت حمل کوله‌پشتی، ارزش کل انتخاب او به بیشترین مقدار برسد.

عنصرها در قالب فهرستی از عنصرها نمایش داده می‌شوند. هر عنصر یک وزن و یک ارزش دارد. همه‌ی ارزش‌های داده‌شده اکیداً مثبت هستند. باب می‌تواند از هر عنصر فقط یکی بردارد.

برای مثال:

Items: [
  { "weight": 5, "value": 10 },
  { "weight": 4, "value": 40 },
  { "weight": 6, "value": 30 },
  { "weight": 4, "value": 50 }
]

Knapsack Maximum Weight: 10

در مثال بالا، عنصر اول وزن ۵ و ارزش ۱۰ دارد، عنصر دوم وزن ۴ و ارزش ۴۰ دارد و به همین ترتیب. در این مثال، باب باید عنصر دوم و چهارم را بردارد تا ارزشش به بیشترین مقدار برسد که در این حالت برابر ۹۰ است. او نمی‌تواند بیشتر از ۹۰ به دست آورد، چون کوله‌پشتی‌اش محدودیت وزنی ۱۰ دارد.


منبع

Wikipediaاین لینک در پنجره یا تب جدیدی باز می‌شود.
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Haskell Exercism

آماده‌اید کوله‌پشتی را شروع کنید؟

در Exercism ثبت‌نام کنید تا Haskell را همراه با 107 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.