版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iceSony/article/details/82623232
凑出想要的数字
代码如下
#include<iostream>
using namespace std;
int a[] = { 1,2,5,10};//币种
int b[] = { 3,1,2,2 };//数量
int f1(int sum, int index,int num)
{
int count = 0;
//兑换完成
if (sum == 0) return 1;
//未兑换完成
if (index>num) return 0;
else
{
//主要逻辑
for (int n = 0; n <=b[index] && sum - n*a[index] >= 0; n++)
count += f1(sum - n*a[index], index + 1, num);
}
return count;
}
int main()
{
int sum;//需要的数字
while (cin >> sum)
{
if (sum > 0)
{
int count = f1(sum, 0, 4);
cout << "分法一共有" << count << "种" << endl;
}
else
cout << "sum 小于0!" << endl;
}
return 0;
}
第一次发现递归这么舒适