Algorithm to determine coin combinations

后端 未结 13 2650
臣服心动
臣服心动 2020-12-25 08:33

I was recently faced with a prompt for a programming algorithm that I had no idea what to do for. I\'ve never really written an algorithm before, so I\'m kind of a newb at t

13条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-25 08:59

    For such a small number of coins you can write a simple brute force solution.

    Something like this:

    #include 
    #include 
    #include 
    
    using namespace std;
    
    vector v;
    
    int solve(int total, int * coins, int lastI)
    {
        if (total == 50) 
        {
            for (int i = 0; i < v.size(); i++)
            {
                cout << v.at(i) << ' ';
            }
            cout << "\n";
            return 1;
        }
    
        if (total > 50) return 0;
    
        int sum = 0;
    
        for (int i = lastI; i < 6; i++)
        {
            v.push_back(coins[i]);
            sum += solve(total + coins[i], coins, i); 
            v.pop_back();
        }
    
        return sum;
    }
    
    
    int main()
    {
        int coins[6] = {2, 4, 6, 10, 15, 50};
        cout << solve(0, coins, 0) << endl;
    }
    

    A very dirty brute force solution that prints all possible combinations.

    This is a very famous problem, so try reading about better solutions others have provided.

提交回复
热议问题