1分2分5分的硬币,组成1角,共有多少种组合
本文转载:http://topic.csdn.net/u/20110913/21/54ef3c9d-6e86-4a4e-8359-cc8f0d728770.html
我把比较经典的解法整理出来,一般的for循环解法有空在整理
思路分析: 设1分个数为x,2分个数为y,5分的硬币个数为z,则1*x+2*y+5*z=10; 5*z=10-x-2*y;即: z x对应可能的取值 z=0 时x=10 8 6 4 2 0(6个) z=1 时x=5 3 1(3个) z=2时x= 0(1个) 总共个数为6+3+1=10. 因此,按照规律,本题目组合总数为10以内的偶数+5以内的奇数+0以内的偶数 某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2 某个奇数m以内的奇数个数也可以表示为(m+2)/2 所以,求总的组合次数可以编程为: |
C语言代码:
#include <stdio.h>
void main(void) {
int number=0,m;
// 因为5*z=10-x-2*y<=10;z的取值范围为0、1、2(注意5*z),所以m的步长是5啊
for (m=0;m<=10;m+=5) {
number += (m+2)/2;
}
printf("组合数的个数为:%d\n",number);
}
该算法对本题没问题,能否提炼出通用算法。
如果6分、4分、2分组成100分怎么处理呢?
和先前一样的道理,2分为x,4分为y,6分为z。则6*z=100-2*x-4*y,可化简为:
3*z=50-x-2*y
z可能的取值为0、1、2···16,
当z=0时,x可以为50 48 46···2 0(26个)
当z=1时,x可以为47 45 43···3 1(24个)
当z=2时,x可以为44 42 40···2 0(23个)
当z=3时,x可以为41 39 37···3 1(21个)
·
·
·
当z=15时,x可以为5 3 1(3个)
当z=16时,x可以为2 0(2个)
因此,按照规律,本题目组合总数为50以内的偶数+47以内的奇数+44以内的偶数+···+5以内的奇数+2以内的偶数
某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2
某个奇数m以内的奇数个数也可以表示为(m+2)/2
所以,求总的组合次数可以编程为:
number=0;
for (int m=0;m<=50;m+=3)
{
number+=(m+2)/2;
}
cout<<number<<endl;
是不是可以看出规律了呢?实际上就是看表达式(这里是3*z=50-x-2*y),就是把最大乘数(这里是3)放在一边,这也是m增加的步长。而m的最大取值也就是表达式中的这个常数。
1分2分5分的硬币,组成1角,共有多少种组合相关推荐
- 1分2分5分的硬币,组成1角,共有多少种组合。
/* 1分2分5分的硬币,组成1角,共有多少种组合. */ #include <iostream> using namespace std; int solve(int total); i ...
- 【算法】1分2分5分的硬币,组成1角,共有多少种组合
1*x + 2*y + 5*z = 10 解法一:暴力枚举法 void main(){int n = 0;// 5分硬币最多有i个for (int i=0; i<3; i++){// 2分硬币最 ...
- 有 20 枚硬币,可能包括 4 种类型:1 元、5 角、1 角和 5 分。已知 20 枚硬币的总价值为 10 元,求各种硬币的数量。
有以下问题 有 20 枚硬币,可能包括 4 种类型:1 元.5 角.1 角和 5 分.已知 20 枚硬币的总价值为 10 元,求各种硬币的数量. 首先我们先来分析一下,每种硬币的情况,1 元最多 10 ...
- /* * 编程题第四题(20分): 用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案。 */
题目: /* 编程题第四题(20分): 用1元5角钱人名币兑换5分.2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案. */ 我使用java做的 public class ...
- c语言19之用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案
题目: 用1元5角钱人名币兑换5分.2分和1分的硬币(每一种都要有)共一百枚, 问共有几种兑换方案?并输出每种方案. 源代码: #include<stdio.h> int main() { ...
- 用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案。
用1元5角钱人名币兑换5分.2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案. #include<stdio.h> int main(){int sum=150 ...
- 整钱换零钱问题。把1元换成1分、2分、5分的硬币,共有多少种不同的换法(C语言)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验体验] 1.整钱换零钱问题.把1元换成1分.2分.5分的硬币,共有多少种不同的换法. 提示:设5分币个数为i(0-20) ...
- 创新工场笔试题----有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
[题目]有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱? 代码如下 void Combination(int *a,int index,int n,v ...
- 找假币问题-2分法 VS 3分法
分治算法-找假币问题-2分法VS3分法 找假币问题-2分法 VS 3分法 问题:有k枚硬币,其中有一枚假币,假币与真币无外观差异,只是假币的重量稍微大一些.现有一个无砝码称重天平,通过称重的方式找出假 ...
最新文章
- CSS中一些语法规范和代码风格
- 为.NET部署应用程序添加个卸载程序
- 【Linux】19.Linux环境变量名LD_LIBRARY_PATH 和 ldd命令详解
- 编写DLL所学所思(1)——导出函数
- pycharm变量存_pycharm不为人知的功能们
- 直博清华!陕西女学霸:从农村走出,3次斩获国奖,还被央视采访
- IONIC打包安卓遇到COM.ANDROID.SUPPORT:SUPPORT-V4错误的解决办法
- 【CentOS】又是一篇Shell
- 全网最全详解Windows CMD命令大全
- Kepware配置OPC UA实现匿名or用户名/密码连接
- WIFI计量插座之计量芯片选型
- 基于深度学习安卓端烟雾和火焰检测开发总结
- Android中什么是Dex文件
- springboot整合quartz定时任务
- 车载以太网和工业以太网区别
- Ubuntu各版本代号
- 西游降魔之东去的西游
- 使用putty连接并上传和下载文件到linux服务器
- 安装oh my zsh
- 基于STM32的智能篮球测温记分记时系统
热门文章
- 弘辽科技:淘宝搜索流量是什么意思?
- 合肥对口计算机,2021年合肥市对口考试要做哪些题目?计算机应用基础(Windows7+office2010)周测月考单元卷...
- MySQL安装包下载地址
- 7-5 统计英文字母和数字字符 (10 分)
- 5G工业网关的科技治超应用 超限超重超速非现场联合执法
- 今年是 Vue 的天下吗?答案显而易见
- plc secs通讯协议_SECS/GEM解决方案:PLC与MES间的通讯
- 肺结节检测的一些要点总结
- python计算学生年龄_用pandas快速统计学生年龄班级等分组信息
- E - Kth Takoyaki Set(abc297)