Динамическое программирование - количество различных комбинаций для достижения заданного значения

Рассмотрим игру, в которой игрок может набрать 3, 5 или 10 очков за ход. По общему количеству баллов n найдите количество «различных» комбинаций для достижения данного балла.

Мой код:

#include <iostream>
#include<unordered_map>
using namespace std;

unordered_map<int,int> m;

int numOfWays(int n){
    if(n==0)
        return 1;
    if(n<0)
        return 0;
    if(m[n]>0)
        return m[n];
    m[n] = numOfWays(n-3)+numOfWays(n-5)+numOfWays(n-10);
    return m[n];
}

int main(){
    int t; 
    cin>>t;
    cout<<numOfWays(t)<<endl;
    return 0;
}

Для входа 11 я получаю 3 в качестве выхода, но различные комбинации возможны только 1. (11 = 3 + 3 + 5)

Как мне изменить приведенный выше код, чтобы он возвращал количество «различных» комбинаций?

Ответы на вопрос(1)

Ваш ответ на вопрос