原题:
钱币兑换问题
问题思路:
用分别同时进行的思想;
先看看总数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;
}