Мне нужно написать программу, которая отображает все возможные комбинации комбинаций, учитывая массив наименований [1, 2, 5, 10, 20, 50, 100, 200] // 1 = 1 центВсе возможные комбинации монет
Value, чтобы сделать переход от = 300
Я основывая свой код на решение с этого сайта http://www.geeksforgeeks.org/dynamic-programming-set-7-coin-change/
#include<stdio.h>
int count(int S[], int m, int n)
{
int i, j, x, y;
// We need n+1 rows as the table is consturcted in bottom up manner using
// the base case 0 value case (n = 0)
int table[n+1][m];
// Fill the enteries for 0 value case (n = 0)
for (i=0; i<m; i++)
table[0][i] = 1;
// Fill rest of the table enteries in bottom up manner
for (i = 1; i < n+1; i++)
{
for (j = 0; j < m; j++)
{
// Count of solutions including S[j]
x = (i-S[j] >= 0)? table[i - S[j]][j]: 0;
// Count of solutions excluding S[j]
y = (j >= 1)? table[i][j-1]: 0;
// total count
table[i][j] = x + y;
}
}
return table[n][m-1];
}
// Driver program to test above function
int main()
{
int arr[] = {1, 2, 5, 10, 20, 50, 100, 200}; //coins array
int m = sizeof(arr)/sizeof(arr[0]);
int n = 300; //value to make change from
printf(" %d ", count(arr, m, n));
return 0;
}
программа прекрасно работает. Он отображает количество всех возможных комбинаций, но мне нужно, чтобы он был более продвинутым. Мне нужно, чтобы он работал, чтобы отобразить результат следующим образом:
1 цента: n количество возможных комбинаций.
2 цента:
5 центов:
и так далее ...
Как я могу изменить код для достижения этой цели?
Когда вы говорите: * 1 цент: п число возможных комбинаций * Вы имеете в виду, сколько комбинаций используют 1 цент монеты? Если это так, добавьте массив счетчиков и каждый раз, когда вы попадаете в 'table [i] [j] = x + y;' вам нужно будет обновить эти счетчики –
Да, мне нужно, чтобы он отображал информацию о том, сколько комбинаций может быть для каждой монеты. Например, 1 цент: 1251251 комбинаций 2 цента: 432423 комбинаций и т. Д. – KoKsMAN
См. Отредактированное примечание –