From 4358002cdef6dc06e22277c70eabe13eda84c027 Mon Sep 17 00:00:00 2001 From: 20124023 <147236515+20124023@users.noreply.github.com> Date: Sat, 7 Oct 2023 13:44:01 +0530 Subject: [PATCH] Create subset-sum.cpp Added Subset-Sum --- c++/subset-sum.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 c++/subset-sum.cpp diff --git a/c++/subset-sum.cpp b/c++/subset-sum.cpp new file mode 100644 index 0000000..cb8edb9 --- /dev/null +++ b/c++/subset-sum.cpp @@ -0,0 +1,37 @@ +#include +using namespace std; + +bool isSubsetSum(int set[], int n, int sum) +{ + bool subset[n + 1][sum + 1]; + + for (int i = 0; i <= n; i++) + subset[i][0] = true; + + for (int i = 1; i <= sum; i++) + subset[0][i] = false; + + for (int i = 1; i <= n; i++) { + for (int j = 1; j <= sum; j++) { + if (j < set[i - 1]) + subset[i][j] = subset[i - 1][j]; + if (j >= set[i - 1]) + subset[i][j] + = subset[i - 1][j] + || subset[i - 1][j - set[i - 1]]; + } + } + return subset[n][sum]; +} + +int main() +{ + int set[] = { 3, 34, 4, 12, 5, 2 }; + int sum = 9; + int n = sizeof(set) / sizeof(set[0]); + if (isSubsetSum(set, n, sum) == true) + cout << "Found a subset with given sum"; + else + cout << "No subset with given sum"; + return 0; +}