第四範式,有幾個不同面值,輸入一個錢數,求有多少種類

/*
這是一個面值題,題目大致意思就是比如我有1,2,5,10  4種面值紙幣,沒有限制張數。任意輸入一張面值,求出有多少種加起來得和等於這個面值。(實際這個對於張數有限制得同樣有作用,只要改一下限制)
*/
#include<iostream>


using namespace std;

int ans = 0;
void get_num(int m[], int total[], int n[], int money)
{
	while (true)
	{
		int sum = 0;
		for (int i = 0; i < 4; i++)
			sum = sum + m[i] * n[i];
		if (sum == money)
		{
			ans++;
			for (int i = 0; i < 4; i++)
				cout << n[i] << " ";
			cout << endl;
		}
		int k = 3;
		while (k >= 0)
		{
			if (n[k] <total[k])
			{
				n[k]++;
				break;
			}
			else
			{
				n[k] = 0;
				k = k - 1;
			}
		}
		if (k < 0)
		{
			break;
		}
	}
}
int main()
{
	int money;//輸入數值
	int m[] = { 10,5,2,1 };
	cin >> money;
	int total[] = { money / 10,money / 5,money / 2,money / 1 };
	int n[4] = { 0 };
	get_num(m,total,n,money);
	cout << ans << endl;
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章