题目 : 假如现手中有m(m<=24)个火柴棍,希望拼出A+B=C等式。等式中的A、B、C均为火柴棍拼出来的整数(若该数非0,则最高位不能为0)。

注意:

  • 1、加号与等号各自需要2根火柴棍;
  • 2、如果A不等于B,则A+B=C与B+A=C视为不同的等式(三者均大于0);
  • 3、所有根火柴棍必须全都用上。

思路:24根除去 '+' 和 '=' 4根还有20根,而数字1所需火柴棍最少,需2根。则三者中任一数不能超过1111。只需枚举A和B, C可以通过A和B计算。A中火柴棍数加上B中火柴棍数等于C中火柴棍数,若恰好等于m-4的话,则成功找出一组解。

代码如下 :

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int Fun(int n)
{//用数组列出0-9没一个数所需要的火柴棍数int arr[10] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6};int ret = 0;//判断n是不是两位数或更高位数while (n / 10 != 0){//将个位数所需要的火柴棍数相加ret += arr[n % 10];//更新n的个位数n /= 10;}//最后加上此时n需要的火柴棍数(n是一位数)ret += arr[n];return ret;
}
int main()
{int a, b, c, m, num = 0;printf("请输入火柴棍的个数\n");scanf("%d", &m);//枚举a和bfor (a = 0; a <= 1111; a++){for (b = 0; b <= 1111; b++){c = a + b;//判读是否符合条件if (Fun(a) + Fun(b) + Fun(c) == m - 4){printf("%d + %d = %d\n", a, b, c);//计算所有可能的个数num++;}}}printf("一共可以拼出%d个不同等式\n", num);system("pause");return 0;
}

调试结果 :

若有出错或不懂的地方,​ 欢迎留言, 共同进步 !

啊哈,算法 !--火柴棍公式 ( C语言版 )相关推荐

  1. 第16周 啊哈算法 火柴棍等式

    问题及代码: /*m<=24根火柴棍,求可以构造出多少个满足A+B=C的等式, 其中=和+各需2根火柴棍*/ #include<stdio.h> int fun(int x){int ...

  2. 啊哈!算法—火柴棍等式

    现手中有m(m<=24)个火柴棍,希望拼出A+B=C等式.等式中的A.B.C均为火柴棍拼出来的整数(若该数非0,则最高位不能为0). 注意: 1.加号与等号各自需要2根火柴棍: 2.如果A不等于 ...

  3. 选择排序算法详解之C语言版

    一.算法原理 选择排序属于不稳定排序法,是一种常用的排序算法,其时间复杂度为O(n^2). 所谓的不稳定排序算法是指在一组数据中存在多个相同的数据,但是在排序之后,相同数据的前后位置会发生改变.例如有 ...

  4. 十大排序算法之堆排序 --- (C语言版)

    简言:这里我只是给出了代码和注释,如果想要理解算法的意义,可以去看这位博主的讲解还是很清楚的.如果有不清楚的话,欢迎小伙伴私聊求问. 堆排序(C语言)_小-黯的博客-CSDN博客_堆排序c语言 这里需 ...

  5. 哈希(Hash)查找算法详解之C语言版

    一.哈希查找算法原理 哈希查找是一种快速查找算法,该算法不需要对关键字进行比较,而是以关键字为自变量,以该关键字在存储空间中的地址为因变量,建立某种函数关系,称为哈希函数,这样在查找某一关键字的时候, ...

  6. 折半插入排序算法详解之C语言版

    一.算法原理 折半插入排序是插入排序方法中一种,相比较与直接插入排序算法,减少了排序过程中比较次数,也是一种常用的排序算法. 折半插入排序算法基本原理是将折半查找方法与直接插入排序方法相结合,也就是在 ...

  7. 霍夫曼(Huffman)编码算法详解之C语言版

    一.Huffman编码 霍夫曼(Huffman)树是一类带权路径长度最短的二叉树树.Huffman树的一个非常重要的应用就是进行Huffman编码以得到0-1码流进行快速传输. 在电报收发等数据通讯中 ...

  8. 操作系统银行家算法模拟实现(C语言版)

    目录 一.实验目的 二.实验内容 三.实验要点说明 银行家算法实例 程序结构 四.实验代码 五.实验运行结果 一.实验目的 通过编写一个模拟动态资源分配的银行家算法程序,进一步深入理解死锁.产生死锁的 ...

  9. 计算机操作系统——银行家算法详解(C语言版)

    目录 一.实验目的 二.实验内容 三.实验要点说明 数据结构 银行家算法bank()函数 安全性算法safe()函数 银行家算法实例 程序结构 四.实验代码 五.结果展示 一.实验目的 通过编写一个模 ...

最新文章

  1. 线程类中如何调用service_你真的了解Java多线程吗?
  2. ES6 模块化的基本语法——默认导出 与 默认导入、按需导出 与 按需导入、直接导入并执行模块代码
  3. 【CEO赠书】《精益数据分析》:如何构建数据指标体系
  4. oracle resetlogs 误删,oracle undo表空间误删恢复
  5. Mark一下 | 当当优惠码,实付满150减30 | + 荐书
  6. Win10计算机首次使用时间,如何查看Win10开机运行了多长时间
  7. 【转】最牛B的编码套路
  8. 腾讯面试编程题python_腾讯面试官出的 2 道经典数据分析面试题
  9. java学习(131):hashtable
  10. java模式之装饰模式
  11. 从单片机转到嵌入式Linux的跨度大吗?
  12. AC自动机 - 多模式串的匹配 --- HDU 3695 Computer Virus on Planet Pandora
  13. 微软阵营企稳的利好消息:.NET开源、Visual Studio免费
  14. python爬虫的用途_python爬虫用代理ip有什么用途?
  15. js中数据结构数组Array、映射Map、集合Set、对象、JSON
  16. biztalk 2006 产品的版本以及适配器相关信息
  17. Error inflating class android.webkit.WebView Caused by: ...: String resource ID #0x2040003
  18. PyQt5(designer)入门教程
  19. fpga板子怎么和电脑连_[笔记].怎样正确插拔FPGA开发板的JTAG仿真器,如USB-Blaster等?...
  20. 信息安全行业从业指南2.0

热门文章

  1. 诸多源码,正是我想要的
  2. 大前端xiu7.3主题wordpress主题下载xiu7.3免费下载
  3. [Java Path Finder][JPF学习笔记][3]使用jpf-shell
  4. 收藏!Linux 常用命令合集
  5. python自动化中附件如何上传
  6. 问题 C: 身份证号码
  7. python3.8安装pyinstaller库_模块:pyinstaller库的安装与使用
  8. ESP8266开发之旅 WebServer篇⑥ DS18B20 Web Server
  9. 制作轮播图的几种方式
  10. Sonar LTS 版本 8.9发布|新特性