-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCoin Exchange.cpp
60 lines (52 loc) · 1.33 KB
/
Coin Exchange.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <cstdlib>
#include <climits>
#include <cstdio>
using namespace std;
#define DUMMY 5454
int ways[1000000];
int wt[] = {DUMMY, 10, 20, 30, 10};
//This solution does not allow repetation
int knapSack(int N, int W){
ways[0] = 1;
for(int i = 1; i<= W; i++)ways[i] = 0;
for(int i = 1; i<= N; i++)
for(int j = W; j>0; j--){
//if(wt[i]>j) ways[j] = ways[j];
if(wt[i]<= j) ways[j] = ways[j] + ways[j - wt[i]];
}
return ways[W];
}
int main()
{
int W = 20;
int n = sizeof(wt)/sizeof(wt[0]);
printf("%d", knapSack(n-1, W));
return 0;
}
/*
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int count( int S[], int m, int n )
{
// table[i] will be storing the number of solutions for
// value i. We need n+1 rows as the table is consturcted
// in bottom up manner using the base case (n = 0)
int table[n+1];
// Initialize all table values as 0
memset(table, 0, sizeof(table));
// Base case (If given value is 0)
table[0] = 1;
// Pick all coins one by one and update the table[] values
// after the index greater than or equal to the value of the
// picked coin
for(int i=0; i<m; i++)
for(int j=S[i]; j<=n; j++)
table[j] += table[j-S[i]];
return table[n];
}
int main(){
return 0;
}
*/