3660 - 6.硬币方案

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

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;
}

Java解答

public class Main {
	public static void main(String[] args) {
		System.out.println("50");
	}
}