3660 - 6.硬币方案

50枚硬币,可能包括4种类型:1元,5角,1角,5分。

<span style="font-family:宋体;">已知总价值为</span><span>20</span><span style="font-family:宋体;">元。求各种硬币的数量。</span><span></span>

<span style="font-family:宋体;">比如:</span><span>2,34,6,8 </span><span style="font-family:宋体;">就是一种答案。</span><span></span>

<span style="font-family:宋体;">而</span><span> 2,33,15,0 </span><span style="font-family:宋体;">是另一个可能的答案,显然答案不唯一。</span><span></span>

<span style="font-family:宋体;">你的任务是确定类似这样的不同的方案一共有多少个(包括已经给出的</span><span>2</span><span style="font-family:宋体;">个)?</span><span></span>

<span style="font-family:宋体;">直接提交该数字,不要提交多余的内容。</span><span></span>

题目输入

题目输出

输入/输出样例

题目输入


                

题目输出


                

C语言解答

#include <stdio.h>
int nSum=2000;
int money[4]={5,10,50,100};
int a[50];
int cnt;
void backpack(int n,int idx)
{
	if(n<0) return;
	if(idx==50)
	{
		if (n==0)
			cnt++;
		return;
	}
	for(int i=0;i<4;i++)
	{
		if(idx==0||money[i]>=a[idx-1])//保证后面的数比前面的数大
		{
			a[idx]=money[i];
			backpack(n-money[i],idx+1);
		}
	}
}
int main()
{
	backpack(nSum,0);
	printf("%d",cnt);
    return 0;
}

C++解答

#include<iostream>
using namespace std;
int main()
{
	//cout<<"tag&&(*p!=*(p+1))&&*(p+1)!='\\n'";
	
	//cout<<"2.506184";t
	//cout<<"1835421";t
	//cout<<"spell(n-1)*0.99";t
	
	cout<<"50";
	return 0;
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题