এই সমস্যাতে, আমাদের একটি মান n দেওয়া থাকে, এবং আমাদের n টাকার চেঞ্জ করতে হবে। আমাদের पास ১ থেকে m পর্যন্ত মান वाले n সংখ্যক কয়েন রয়েছে। আমাদের সেই কয়েনগুলো ব্যবহার করে n টাকার যোগফল তৈরি করার মোট কতগুলো উপায় সম্ভব, তা বের করতে হবে।
উদাহরণ
ইনপুট: N = 6; কয়েন = {1, 2, 4}। আউটপুট: 6
ব্যাখ্যা: ৬ তৈরি করার মোট কম্বিনেশনগুলো হলো:
{1,1,1,1,1,1}; {1,1,1,1,2}; {1,1,2,2}; {1,1,4}; {2,2,2}; {2,4}।
C প্রোগ্রাম উদাহরণ
#include <stdio.h>
int coins(int S[], int m, int n) {
int i, j, x, y;
int table[n+1][m];
for (i = 0; i < m; i++)
table[0][i] = 1;
for (i = 1; i < n+1; i++) {
for (j = 0; j < m; j++) {
x = (i - S[j] >= 0) ? table[i - S[j]][j] : 0;
y = (j >= 1) ? table[i][j-1] : 0;
table[i][j] = x + y;
}
}
return table[n][m-1];
}
int main() {
int arr[] = {1, 2, 3};
int m = sizeof(arr)/sizeof(arr[0]);
int n = 4;
printf("The total number of combinations of coins that sum up to %d", n);
printf(" is %d ", coins(arr, m, n));
return 0;
}
আউটপুট
The total number of combinations of coins that sum up to 4 is 4