游戏算法题-找零

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

第一次发现递归这么舒适

猜你喜欢

转载自blog.csdn.net/iceSony/article/details/82623232