1元有多少种方案换钱

上机目的:学会用for语句

上机内容:1元有多少种方案换钱

/* 
* Copyright (c) 2012, 烟台大学计算机学院 
* All rights reserved. 
* 作    者:  刘玉金
* 完成日期:2012 年 11 月21  日 
* 版 本 号:v1.0 
* 
* 输入描述: 无
* 问题描述:1元的换法
* 程序输出:求方案
* 问题分析:略
* 算法设计:略
*/  
#include<iostream>
using namespace std;
int main()
{
	int f1,f2,f5,count=0;
	for(f1=0;f1<=100;f1++)
		for(f2=0;f2<=50;f2++)
			for(f5=0;f5<=20;f5++)
			{
				if(f1+2*f2+f5*5==100)
				{
					++count;
					cout<<"第"<<count<<"种";  
                    cout<<" "<<"1分钱:"<<f1;  
                    cout<<" "<<"2分钱:"<<f2;  
                    cout<<" "<<"5分钱:"<<f5<<endl;
                if(count%50==0)     
                    {  
                        cout<<"按任意键继续输出(找不到任意键打客服电话问询)……"<<endl;  
                        getchar();  
				}
			}
		}
return 0;

}


 

运行结果:

 

心得体会:略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一可能的解法,使用 Python 语言实现: ```python def change_money(total, num_bills, num_coins, curr_bill, curr_coin, result): # total: 剩余待换的钱数 # num_bills: 当前可用的纸币张数 # num_coins: 当前可用的硬币张数 # curr_bill: 当前正在考虑的纸币面额 # curr_coin: 当前正在考虑的硬币面额 # result: 当前已经确定的换钱方案 if total == 0 and len(result) == 50: # 如果已经换完了50张,且总金额为100元,则输出当前方案 print(result) return if len(result) >= 50: # 如果已经换了50张,但总金额不足100元,则直接返回 return if curr_bill > num_bills or curr_coin > num_coins: # 如果当前纸币或硬币已经用完了,则返回 return # 不选当前纸币或硬币 change_money(total, num_bills, num_coins, curr_bill+1, curr_coin, result) # 选当前纸币或硬币 if curr_bill * 10 + curr_coin * 5 + (50 - len(result)) <= total: # 如果当前方案最多只能换这么多钱,则直接返回 return result.append(curr_bill * 10 + curr_coin * 5) change_money(total - curr_bill * 10 - curr_coin * 5, num_bills, num_coins, curr_bill, curr_coin+1, result) result.pop() # 尝试下一个纸币或硬币 if curr_coin == 0: change_money(total, num_bills, num_coins, curr_bill+1, 0, result) else: change_money(total, num_bills, num_coins, curr_bill, curr_coin+1, result) # 初始状态:100元,1张1元纸币,10张10元纸币,39个5元硬币 change_money(100, 1, 10, 0, 0, []) ``` 这个程序会输出所有可能的换钱方案,每个方案都是一个长度为50的列表,表示换钱的金额序列。注意,由于硬币只有5元,因此换钱方案中的金额必须是5的倍数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值