- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
C++ Program to Solve the 0-1 Knapsack Problem
In 0-1 knapsack problem, a set of items are given, each with a weight and a value. We need to determine the number of each item to include in a collection so that the total weight is less than or equal to the given limit and the total value is large as possible.
Input
Value = [10, 20, 30, 40, 60, 70] Weight=[1, 2, 3, 6, 7, 4] int w=7
Output
knapsack value is: 100
Algorithm
Begin Input: set of items each with a weight and a value Set knapsack capacity Number of items=sizeof(values) / sizeof(values[0]) Knapsack(Values (stored in array v), Weights (stored in array w), Number of distinct items (n), Knapsack capacity W) If (w < 0) Return If no items left or capacity becomes 0 Return 0 Include current item n in knapSack (v[n]) and recurs for remaining items (n - 1) with decreased capacity (W - w[n]) Exclude current item n from knapSack and recurs for remaining items (n - 1) Return maximum value we get by including or excluding current item End
Example Code
#include <iostream> #include <climits> using namespace std; int knapSack(int v[], int w[], int n, int W) { if (W < 0) return INT_MIN; if (n < 0 || W == 0) return 0; int in = v[n] + knapSack(v, w, n - 1, W - w[n]); int ex = knapSack(v, w, n - 1, W); return max (in, ex); } int main() { int v[] = { 10, 20, 30, 40, 60, 70 }; int w[] = { 1, 2, 3, 6, 7, 4 }; int W = 7; int n = sizeof(v) / sizeof(v[0]); cout << "Knapsack value is " << knapSack(v, w, n - 1, W); return 0; }
Output
Knapsack value is 100
- Related Articles
- 0-1 Knapsack Problem in C?
- C++ Program to Solve the Fractional Knapsack Problem
- Python Program for 0-1 Knapsack Problem
- C++ Program to Solve Knapsack Problem Using Dynamic Programming
- Program to implement the fractional knapsack problem in Python
- Fractional Knapsack Problem
- Printing Items in 0/1 Knapsack in C++
- C++ Program to Solve the Dominating Set Problem
- 0/1 Knapsack using Branch and Bound in C++
- 0/1 Knapsack using Branch and Bound in C/C++?
- C++ Program to Solve N-Queen Problem
- Write a C# program to solve FizzBuzz problem
- C++ Program to Solve Travelling Salesman Problem for Unweighted Graph
- C++ program to Solve Tower of Hanoi Problem using Binary Value
- C++ Program to Solve a Matching Problem for a Given Specific Case

Advertisements