Najoptimalnije bi bilo nesto kao:
Code:
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_SUM 9999
using namespace std;
int main() {
int sum;
int count[MAX_SUM];
int coins[3] = {4, 6, 10};
cin >> sum;
memset(count, 0, sizeof(count));
count[0] = 1;
for (int i = 0; i <= sum; i++) {
for (int j = 0; j < 3; j++) {
if (i - coins[j] >= 0) {
count[i] += count[i - coins[j]];
}
}
}
cout << count[sum];
return 0;
}
Ovde se broje kombinacije koje se ponavljaju tipa za 10: [4, 6], [6, 4], [10]