【题目】有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
代码如下
void Combination(int *a,int index,int n,vector<int>& vec)
{
if (n==0)
{
vector<int>::iterator iter=vec.begin();
for (;iter!=vec.end();++iter)
{
cout<<*iter<<" ";
}
cout<<endl;
}
if(n<0)
return;
for (int i=index;i<4;i++)
{
vec.push_back(a[i]);
Combination(a,i,n-a[i],vec);
vec.pop_back();
}
}
void PrintCombination(int n)
{
int a[4]={1,2,5,10};
vector<int> vec;
Combination(a,0,n,vec);
}
void main()
{
int n;
cin>>n;
cout<<n<<"分钱的组合情况如下:"<<endl;
PrintCombination(n);}
参考http://blog.youkuaiyun.com/huangxy10/article/details/8026464
测试