关于60枚一分两分五分硬币凑成一块钱的解决方法

一.强行三重for循环

#include<stdio.h>
int main()
{int a, b, c;for (a = 1; a < 60; a++){for (b = 1; b <= 60; b++){for (c = 1; c <= 60; c++){if (100 == 5 * c + 2 * b + a && 60 == a + b + c){printf("%d %d %d\n", a, b, c);}}}}return 0;
}

结果为

三重循环的时间复杂度太高了,不是解决这个问题的最优方法。

二.减少一重循环,即两重循环

#include<stdio.h>
int main()
{int a, b, c;for (a = 1; a < 10; a++){for (b = 1; b < 60 - a; b++){c = 60 - a - b;if (100 == 5 * c + 2 * b + a && 60 == a + b + c){printf("%d %d %d\n", a, b, c);}}}return 0;
}

其结果也为

两重循环的时间复杂度比起三重循环又有所下降,但还有更优解。

三.一重循环,通过解方程的形式来减少循环次数

#include<stdio.h>
int main()
{int a, b, c;for (c = 1; c < 10; c++){a = 20 + 3 * c;b = 40 - 4 * c;if (a>=0 && b>=0){printf("%d %d %d\n", a, b, c);}}return 0;
}

其结果为

这次的时间复杂度较前两种方法大大降低。
方程如下
a+2b+5c=100
a+b+c=60
解得的式子为
a = 20 + 3 * c
b = 40 - 4 * c
注意:
if语句中的条件因为a、b、c已经满足了a+2b+5c=100、a+b+c=60等条件,故只需要再判断a和b是否大于或等于0即可(因为题目规定a、b不能为负数)

关于60枚一分两分五分硬币凑成一块钱的解决方法相关推荐

  1. 递归实现1分、2分和5分的硬币凑成1元

    问题描述:用递归实现,显示用1分.2分和5分的硬币凑成1元,一共有多少种方法. 代码: #include<stdio.h> int a[]={1,2,5};//币种 int f1(int ...

  2. 问题:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?.md

    问题 如果我们有面值为1元.3元和5元的硬币若干枚,如何用最少的硬币凑够11元? 动态规划的本质是将原问题分解为同性质的若干相同子结构,在求解最优值的过程中将子结构的最优值记录到一个表中以避免有时会有 ...

  3. word 目录里面添加分节符下一页出现空白页的解决方法

    解决方法: 不要"插入下一页分节符"! 在目录后一页的页首,插入分隔符--连续,打开"页眉和页脚工具条",光标置于页脚,点页眉页脚工具条上的"链接到前 ...

  4. 第五人格亚服服务器不稳定,【关于第五人格网络问题的部分原因及解决方法】...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我呢,是一个"大龄"游戏青年,玩过很多游戏,家里的宽带,也从最早的不到1M带宽的电话线,后来的adsl拨号,慢慢的到了现在200M的光 ...

  5. 神奇的python(五)之python强制退出报错(异常)解决方法

    简介:python程序在执行时,有时候由于某些模块冲突或者是定时器冲突,会出现很多奇怪的错误,为此我们需要让python程序在退出时免受这些问题的干扰. (1) 常用的信号类型: SIGINT 终止进 ...

  6. 五.QT cmake无法建立新文件的解决方法

    目录 前言 方法一(另寻捷径): 方法二(死磕到底): 前言 本文为作者踩坑经历的记录,仅供初学者解决问题参考,如有错误望指出! 方法一(另寻捷径): 建立一个新项目时建立qmake系统而不使用cma ...

  7. 动态规划:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?

    <p>首先我们思考一个问题,如何用最少的硬币凑够i元(i<11)?为什么要这么问呢?两个原因:1.当我们遇到一个大问题时,总是习惯把问题的规模变小,这样便于分析讨论.2.这个规模变小 ...

  8. 把一元兑换成1分、2分、5分的硬币,有几种换法?

    用1分2分5分硬币凑成1元共有多少种方法? 这是一种直接的解法.基本想法是按1五分硬币的个救将所有凑法分类. 假定五分硬币有20个,则没有二分硬币,因此只有一种凑法.假定五分硬币有19个,币值为5×1 ...

  9. 期末计算机考试五五开要考多少分,大学平时分加上末考分过了多少算不挂科

    大学平时分加上末考分过了多少算不挂科,一.大学平时分加上末考分过了多少算不挂科一般是综合分数60分以上才算通过,低于60都算挂科.70弄二.中国大学都有平时分这种东西吗许多课程都有平时成绩,一般占20 ...

最新文章

  1. 如何创建自己的ESLint配置包
  2. SAP S4HANA如何取到采购订单ITEM里的'条件'选项卡里的条件类型值?
  3. centos7 locale 区域语言设置
  4. Unicode字符集下WriteFile中文处理
  5. 用python画四叶草代码-python—字符串拼接三种方法
  6. 调度场算法与逆波兰表达式
  7. nginx源码分析之网络初始化
  8. 什么导致了交换机端口呈现err-disable状态?
  9. hana 表空间_oracle currentval
  10. 深入浅出MySQL数据库(一)
  11. 离散数学 第二类斯特林数 小白学习笔记
  12. 找到好东西,可以显示最忙碌的java线程的脚本
  13. asp木马伪装成图片或其它,上传漏洞终极解决方法
  14. excel表自动向下填充
  15. Cocos2dx基础手册
  16. 序设计思维与实践 CSP-M4
  17. 6.3.1 延迟操作接口
  18. PowerBi - TopN+帕累托
  19. 需要知道关于struct的一些事情
  20. iptables防火墙之SNAT、DNAT策略及应用

热门文章

  1. 2020考研 统考英语 核心词汇:社会生活(1)(苗嘉)
  2. visual studio 2017 中默认无法开发 Android 8.0 及以上系统的解决方案
  3. 前端优化系列之一:dns预获取 dns-prefetch 提升页面载入速度
  4. Luogu P1087 FBI树
  5. Xcode 添加代码块
  6. 火狐拓展开发 基础知识
  7. Gitlab CI更多内容学习(二)
  8. 【OpenCV 】Remapping 重映射¶
  9. PHP一些十分严重的缺陷
  10. windows版本下使用xdebug