ZZULIOJ--1260: Coin Change

时间限制: 1 Sec 内存限制: 128 MB
提交: 124 解决: 16
[状态] [提交] [命题人:外部导入]
题目描述
Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make changes with these coins for a given amount of money.

For example, if we have 11 cents, then we can make changes with one 10-cent coin and one 1-cent coin, or two 5-cent coins and one 1-cent coin, or one 5-cent coin and six 1-cent coins, or eleven 1-cent coins. So there are four ways of making changes for 11 cents with the above coins. Note that we count that there is one way of making change for zero cent.

Write a program to find the total number of different ways of making changes for any amount of money in cents. Your program should be able to handle up to 100 cents.

输入
The input file contains any number of lines, each one consisting of a number ( ≤250 ) for the amount of money in cents.

输出
For each input line, output a line containing the number of different ways of making changes with the above 5 types of coins.

样例输入 Copy
11
26
样例输出 Copy
4
13
来源/分类
浙江工业大学网络选拔赛
我认为我的方法还有弊端,比如当数据过多时,可能会面对溢出的情况,连续五个for循环,太恐怖了,需要注意的是,找零的金币总量不能超过100个

#include
using namespace std;
int main()
{
	int n;
	while(~scanf("%d",&n)){
		int a,b,c,d,e,sum=0;
		a=n/50;
		b=n/25;
		c=n/10;
		d=n/5;
		e=n;
		for(int i=0;i<=a;i++){
			for(int j=0;j<=b;j++){
				for(int p=0;p<=c;p++ ){
					for(int q=0;q<=d;q++){
						for(int t=0;t<=e;t++){
							if(50*i+j*25+p*10+q*5+t==n&&(i+j+p+q+t)<=100)
							{
								sum++;
							}
						}
					}
				}
			}
		}
		printf("%d\n",sum);
		sum=0;
	}
	return 0;
}

你可能感兴趣的:(ZQ)