HDU - 1284 兑换钱币

原题:
钱币兑换问题

问题思路:

用分别同时进行的思想;

先看看总数N能被多少个3分硬币替换(因为三分硬币最大)
(硬币数/3)

然后得到最大的三分硬币数;

就可以运用循环,从0颗三分硬币开始,除了三分硬币的,剩余全用二分硬币和一分硬币补齐;

所以就可以用:(剩余硬币数/2)得到最多可以有多少个三分硬币(跟上面的三分硬币替换是相同思想的)

值得注意的是,假如(剩余硬币数/2)==0
也是一种情况,证明剩下的还有不足以凑到两分,但是可以凑到一分或者一分硬币都没有;

然后也是从0颗二分硬币开始,每次增加一个二分硬币,加一次,分配数加一个;

以下为AC代码;

#include "stdafx.h"
#include<iostream>
using namespace std;

int main()
{
	int N;
	while (cin>>N)
	{
		int x, sum=0;
		x = N / 3;  //最多能有多少个三分硬币
		for (int i = 0 ; i <= x ; i++)
		{
			int z = N - 3*i;  //除掉3分之后,能有多少个硬币剩余;
			int k = z / 2; //除掉3的硬币会后,还剩下多少个硬币能用2替换
			for (int j = 0; j <= k; j++)  //有多少个2就有多少个替换法;即使是0,也可以加;
			{
				sum++;
			}
		}
		cout << sum << endl;
	}
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_26558047/article/details/85008113
今日推荐