数组------找零问题

来源:互联网 发布:数组可以不指定长度吗 编辑:程序博客网 时间:2024/05/22 02:55

题目描述:
现有面值为1, 2, 5, 10的零钱,问把100元兑换成零钱有多少种方法.
分析:
使用递归的方式,考虑有用m种面值(d[m])兑换n元,则对于每种面值都有两种方式,即换或者不换,则有
f(n, m) = f(n, m - 1) + f(n - d[m - 1], m)—>(不兑换当前面值和兑换当前面值).

#include <iostream>using namespace std;int exchangeRMB(int n, int m, int *element);int main(){    int element[4] = {1, 2, 5, 10};    int count = exchangeRMB(100, 4, element);    cout << "100RMB 可以兑换成 " << count << "种方式." << endl;    return 0;}int exchangeRMB(int n , int m, int *element){    if(n == 0)        return 1;    if(n < 0 || m == 0)        return 0;    return exchangeRMB(n, m - 1) + exchangeRMB(n - element[m - 1], m);}

对于使用非递归方式的实现,还没考虑好。

1 0
原创粉丝点击