王道OJ题作业答案-作业8
1、问题描述:
Description:某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?
Input:无输入
Output:一个数,表示共有多少种换法
Sample Input 1:无 Sample Output 1:不能告知,因为只有一个数,偷偷告诉你小于100
2、思路说明:
本题可以用穷举法暴力求解,每种钞票的数目依次循环递增,最后保证总的金额数是100元,且钞票数是40即可,这就是一种换法,利用循环不断尝试,最后得出总的换法。
3、代码:
1 #include<stdio.h> 2 int main() 3 { 4 int sum=100;//总金额为100 5 int a,b,c,d;//a,b,c,d分别表示10元、5元、2元、1元面值的钞票 6 int count=0;//用来计算方法的种类 7 //暴力求解法 8 //由于每种钞票都至少有一张,所以a,b,c,d的初始值都是1 9 for(a=1;a<10;a++)//100元全部换成10元的,至多有10张 10 { 11 for(b=1;b<20;b++)//100元全部换成5元的,至多有20张 12 { 13 for(c=1;c<40;c++)//100元全部换成2元的,至多有50张,但题目要求总数正好40张,因此至多有40张 14 { 15 for(d=1;d<40;d++)//100元全部换成21元的,至多有100张,但题目要求总数正好40张,因此至多有40张 16 { 17 if(a+b+c+d==40&&a*10+b*5+c*2+d==100)//要求金额总数为100元,且正好40张 18 { 19 count++;//记录换的方法 20 } 21 } 22 } 23 } 24 } 25 //其实对于题目的每种钞票至少有一张,可以进一步缩小a,b,c,d的范围限制 26 //此处只进行了粗略计算 27 printf("%d",count); 28 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人