/*C语言编程:某人想将手中一张面值100元的人民币换成5元(可单换20张)、1元(可单换100张)和0.5元(可单换200张)面值的票子,但要求100元换以上的零钱共100张,且要求每种不少于1张,问有哪几种组合?*/
int 五元张(0), 一张元(0), 五角张(0);
double 总金额(100);
bool 结束(true);
do
{
五元张++;
总金额 -= 五元张 * 5;
do
{
一张元++;
总金额--;
do
{
五角张++;
总金额 -= 0.5;
if (五元张 + 一张元 + 五角张 == 100)
{
if (!总金额)
{
cout << "五元张:" << 五元张 << " 一张元:" << 一张元 << " 五角张:" << 五角张 << endl;
if (一张元 == 1)
结束 = false;
}
总金额 = 100 - 五元张 * 5 - 一张元;
五角张 = 0;
break;
}
} while (true);
if (一张元 == 100 - 五元张 * 5)
break;
} while (true);
总金额 = 100;
一张元 = 0;
} while (结束);
2021-5-30
void 百元五元一元五毛()
{
int w = 1, y = 1, f = 1, b = 100;
while (b)
{
if (f * 2 + y + w == b&&w * 5 + y + f == b)
{
std::cout << f * 2 << std::ends << y << std::ends << w << std::ends;
std::cout << f << std::ends << y << std::ends << w * 5 << std::endl;
++w, y = 1, f = 1;
}
else
if (++f > b - y - w)
{
f = 1;
if (++y > b - f - w)++w, y = 1;
}
if (w >= b)b = 0;
}
}