C++怎么求最少硬币数

描述
现有1元、3元、5元、10元四种面额的硬币,每种面额的硬币数量不限,请问最小需要多少枚硬币凑够m元。
例如,要凑够4元,有如下2种方案:
1+1+1+1 = 4
1+3=4
因此,要凑够4元,最小需要2枚硬币。
输入
m (m为整数,且1<= m <= 10000)
输出
凑够m元最少需要的硬币数量
样例输入
11
样例输出
2

可以看一下贪心算法和动态规划,动态转移方程,都是类似的问题