题目:现有1元、5元、10元、20元、50元面值不等的钞票,问需要90元钱有多少种找钱方案
此题如果没要求打印结果,只要求打印出一共有多少种方案,那么可以采用贪心算法
首先选取最大的,然后逐次选择最小的进行递归实现
代码如下:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
using namespace std;
int arr[5]={50,20,10,5,1};
int fun( int n,int index) {
if(n<0) return 0;
if(n==0)return 1;
int num=0;
if(index==5) return 0;
for(int i=0;i<=n/arr[index];i++)
{
num+=fun(n-i*arr[index],index+1);
}
return num;
}
int _tmain(int argc, _TCHAR* argv[])
{
cout<<fun(1,0)<<endl;
cout<<fun(5,0)<<endl;
cout<<fun(10,0)<<endl;
cout<<fun(90,0)<<endl;
system("pause");
return 0;
}