Skip to content

Commit 9b80553

Browse files
author
Skm2000
committed
Dp
0 parents  commit 9b80553

11 files changed

+238
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
./a.out

Coin_Changing_1.cpp

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int Max_ways(int coins[],int size,int sum){
5+
int dp[size+1][sum+1];
6+
for(int i=0;i<=sum;i++){
7+
dp[0][i]=0;
8+
}
9+
for(int i=0;i<=size;i++){
10+
dp[i][0]=1;
11+
}
12+
for(int i=1;i<=size;i++){
13+
for(int j=1;j<=sum;j++){
14+
if(coins[i-1]<=j){
15+
dp[i][j] = dp[i-1][j] + dp[i][j-coins[i-1]];
16+
}
17+
else{
18+
dp[i][j] = dp[i-1][j];
19+
}
20+
}
21+
}
22+
for(int i=0;i<=size;i++){
23+
for(int j=0;j<=sum;j++){
24+
cout<<dp[i][j]<<" ";
25+
}
26+
cout<<"\n";
27+
}
28+
29+
return dp[size][sum];
30+
}
31+
32+
int main() {
33+
int coins[] = {1, 2, 3};
34+
int size = sizeof(coins)/sizeof(coins[0]);
35+
int sum = 4;
36+
cout<<Max_ways(coins,size,sum)<<"\n";
37+
}

Coin_Changing_2.cpp

Whitespace-only changes.

Count_Subsets_of_given_Sum.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int CountSubsets(int a[],int size,int sum) {
5+
int dp[size+1][sum+1];
6+
for(int i=0;i<=sum;i++){
7+
dp[0][i] = 0;
8+
}
9+
for(int i=0;i<=size;i++){
10+
dp[i][0]=1;
11+
}
12+
for(int i=1;i<=size;i++){
13+
for(int j=1;j<=sum;j++){
14+
if(a[i-1]<=j){
15+
dp[i][j] = dp[i-1][j] + dp[i-1][j-a[i-1]];
16+
}
17+
else {
18+
dp[i][j] = dp[i-1][j];
19+
}
20+
}
21+
}
22+
for(int i=0;i<=size;i++){
23+
for(int j=0;j<=sum;j++){
24+
cout<<dp[i][j]<<" ";
25+
}
26+
cout<<"\n";
27+
}
28+
return dp[size][sum];
29+
}
30+
31+
int main() {
32+
int a[] = { 1, 2, 3, 3 };
33+
int size = 4;
34+
int sum = 6;
35+
cout<<CountSubsets(a,size,sum)<<"\n";
36+
}

Equal_Sum_Partition.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
bool EqualSubsetSum(int a[],int size) {
5+
int sum=0;
6+
for(int i=0;i<size;i++){
7+
sum+=a[i];
8+
}
9+
if(sum%2!=0) return false;
10+
bool dp[size+1][sum/2+1];
11+
for(int i=0;i<=sum/2;i++){
12+
dp[0][i] = false;
13+
}
14+
for(int i=0;i<=size;i++){
15+
dp[i][0]=true;
16+
}
17+
for(int i=1;i<=size;i++){
18+
for(int j=1;j<=sum/2;j++){
19+
if(a[i-1]<=j){
20+
dp[i][j] = dp[i-1][j] || dp[i-1][j-a[i-1]];
21+
}
22+
else{
23+
dp[i][j] = dp[i-1][j];
24+
}
25+
}
26+
}
27+
return dp[size][sum/2];
28+
}
29+
30+
int main() {
31+
32+
int a[] = {3, 1, 1, 2, 2, 1};
33+
int size = sizeof(a) / sizeof(a[0]);
34+
cout<<EqualSubsetSum(a,size)<<"\n";
35+
36+
}

Knapsack_0_1.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
int knapsack(int wt[],int val[],int W,int size){
4+
int dp[size+1][W+1];
5+
for(int i=0;i<=size;i++){
6+
for(int j=0;j<=W;j++){
7+
if(i==0 || j==0){
8+
dp[i][j] = 0;
9+
}
10+
else if(wt[i-1]<=j){
11+
dp[i][j] = max(dp[i-1][j],val[i-1] + dp[i-1][j-wt[i-1]]);
12+
}
13+
else{
14+
dp[i][j] = dp[i-1][j];
15+
}
16+
}
17+
}
18+
return dp[size][W];
19+
}
20+
21+
int main() {
22+
23+
int val[] = {60, 100, 120};
24+
int wt[] = {10, 20, 30};
25+
int W = 50;
26+
int size = sizeof(val)/sizeof(val[0]);
27+
cout<<knapsack(wt,val,W,size)<<"\n";
28+
29+
}

Minimum_Subset_Sum_Difference.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;

Rod_Cutting.cpp

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int rodCutting(int cost[],int len[],int size) {
5+
int dp[size+1][size+1];
6+
for(int i=0;i<=size;i++){
7+
for(int j=0;j<=size;j++){
8+
if(i==0 || j==0){
9+
dp[i][j] = 0;
10+
}
11+
else if(len[i-1]<=j){
12+
dp[i][j] = max(dp[i-1][j],cost[i-1] + dp[i][j-len[i-1]]);
13+
}
14+
else{
15+
dp[i][j] = dp[i-1][j];
16+
}
17+
}
18+
}
19+
for(int i=0;i<=size;i++){
20+
for(int j=0;j<=size;j++){
21+
cout<<dp[i][j]<<" ";
22+
}
23+
cout<<"\n";
24+
}
25+
return dp[size][size];
26+
}
27+
28+
int main() {
29+
int len[] = {1, 2, 3, 4, 5, 6, 7, 8};
30+
int cost[] = {1, 5, 8, 9, 10, 17, 17, 20};
31+
int size = sizeof(cost)/sizeof(cost[0]);
32+
cout<<rodCutting(cost,len,size);
33+
}

SubsetSum.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
bool SubsetSum(int a[],int size,int sum) {
4+
bool dp[size+1][sum+1];
5+
for(int i=0;i<=sum;i++){
6+
dp[0][i] = false;
7+
}
8+
for(int i=0;i<=size;i++){
9+
dp[i][0]=true;
10+
}
11+
for(int i=1;i<=size;i++){
12+
for(int j=1;j<=sum;j++){
13+
if(a[i-1] <= j) {
14+
dp[i][j] = dp[i-1][j] || dp[i-1][j-a[i-1]];
15+
}
16+
else {
17+
dp[i][j] = dp[i-1][j];
18+
}
19+
}
20+
}
21+
return dp[size][sum];
22+
}
23+
24+
int main() {
25+
int a[] = {3, 34, 4, 12, 5, 2};
26+
int sum = 1;
27+
int size = sizeof(a)/sizeof a[0];
28+
cout<<SubsetSum(a,size,sum)<<"\n";
29+
}

Unbounded_Knapsack.cpp

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
int knapsack(int wt[],int val[],int W,int size){
4+
int dp[size+1][W+1];
5+
for(int i=0;i<=size;i++){
6+
for(int j=0;j<=W;j++){
7+
if(i==0 || j==0){
8+
dp[i][j] = 0;
9+
}
10+
else if(wt[i-1]<=j){
11+
dp[i][j] = max(dp[i-1][j],val[i-1] + dp[i][j-wt[i-1]]);
12+
}
13+
else{
14+
dp[i][j] = dp[i-1][j];
15+
}
16+
}
17+
}
18+
for(int i=0;i<=size;i++){
19+
for(int j=0;j<=W;j++){
20+
cout<<dp[i][j]<<" ";
21+
}
22+
cout<<"\n";
23+
}
24+
return dp[size][W];
25+
}
26+
27+
int main() {
28+
29+
int wt[] = {1, 3, 2};
30+
int val[] = {50, 10, 15};
31+
int W = 10;
32+
int size = sizeof(val)/sizeof(val[0]);
33+
cout<<knapsack(wt,val,W,size)<<"\n";
34+
35+
}

a.out

15.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)