算法 3.3——火柴棍等式
- 现在有n跟火柴棍,希望拼出A+B=C的等式。等式中的A,B,C均是用火柴棍拼出来的整数。
- 0需要6根火柴,1需要2根火柴,2需要5根火柴,3需要5个火柴,4需要4根火柴,5需要5根火柴,6需要6根火柴,7需要3根火柴,8需要7根火柴,9需要6根火柴。
- 加号与等号各自需要2根火柴。
- 如果A!=B,则A+B=C与B+A=C视为不同的等式(A,B,C都大于0)
- 所有火柴棍必须都用上。
- 假如有m根(m<=24)根火柴棍,那么可以拼出多少个不同形式的A+B=C的等式。
思考后:——————————————
代码如下:
#include <stdio.h>int fun(int x)
{int num = 0;//用来计数的变量,一定记得初始化int f[10] = { 6,2,5,5,4,5,6,3,7,6 };//用一个数组来记录0-9每个数字需要用多少根火柴棍while (x / 10 != 0)//如果x/10的商不等于0的话,说明这个数有两位数{//获得x的末尾数字并将此数字所用到的火柴棍根数累加到num中num += f[x % 10];x = x / 10;//去掉x的末尾数字,例如x的值为123则现在x的值为12}//最后加上此时x所用到的火柴棍的根数(此时x一定是一个一位数)num += f[x];return num;//返回需要的火柴棍总根数
}
int main()
{int a, b, c, m, sum = 0;//sum是用来计数的变量,一定记得初始化printf("请输入火柴棍的根数:");scanf("%d", &m);printf("\n");//开始枚举a和bfor (a = 0; a <= 1111; a++){for (b = 0; b <= 1111; b++){c = a + b;//计算出c
//fun是我们自己写的子函数,用来计算一个数所需要用的火柴棍的总数
//当a使用的火柴棍根数+b使用的火柴棍的根数+c使用的火柴棍的根数之和恰好等于m-4时,便成功的找出了一组解if (fun(a) + fun(b) + fun(c) == m - 4){printf("%d+%d=%d\n", a, b, c);sum++;}}}printf("一共可以拼出%d个不同的等式", sum);return 0;
}
结果:
算法 3.3——火柴棍等式相关推荐
- 《啊哈算法》学习三 火柴棍等式
通过求解火柴棍等式来学习枚举算法. 现有m根(m≤24)火柴棍,那么可以拼出多少个不同的形如A+B=C的等式呢?(本题根据NOIP2008提高组第二题改编) 注意: 1.加号与等号各自需要两根火柴棍. ...
- Java、python实现啊哈算法 —— chapter3 火柴棍等式
逻辑书上写的已经很清楚了,但是书上的代码里有一点错误,最大能取到的数字是'11111' 而不是'1111',好了,下面上代码: python:def fun(x): #初始化一个方法用来查看某个搭建某 ...
- 第16周 啊哈算法 火柴棍等式
问题及代码: /*m<=24根火柴棍,求可以构造出多少个满足A+B=C的等式, 其中=和+各需2根火柴棍*/ #include<stdio.h> int fun(int x){int ...
- 啊哈!算法—火柴棍等式
现手中有m(m<=24)个火柴棍,希望拼出A+B=C等式.等式中的A.B.C均为火柴棍拼出来的整数(若该数非0,则最高位不能为0). 注意: 1.加号与等号各自需要2根火柴棍: 2.如果A不等于 ...
- 搜索法求解火柴棍等式问题 基于python
完整代码:https://download.csdn.net/download/pythonyanyan/87430541 任务描述 1.1 作业要求 用火柴棍可以摆成一个数字等式,希望移动一根火柴使 ...
- 蓝桥云算法题之火柴棒等式——Python满分解答
火柴棒等式 题目描述 图片描述 输入描述 输出描述 输入输出样例 示例 1 输入 输出 样例解释 示例 2 输入 输出 样例解释 解题思路 代码实现 题目描述 给你 n 根火柴棍,你可以拼出多少个形如 ...
- 火柴棍等式(暴力枚举)
题目描述:给你n个火柴棍,判断能够构成多少个A+B=C(A,B,C为由0~9构成的正整数)形式的等式,其中+与=各由两个火柴棍构成,非零数字的最高位不为零,0 ~ 9的构成如下: 时间限制:1s n& ...
- 火柴棍等式(NOIP)
问题描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注 ...
- 啊哈,算法 !--火柴棍公式 ( C语言版 )
题目 : 假如现手中有m(m<=24)个火柴棍,希望拼出A+B=C等式.等式中的A.B.C均为火柴棍拼出来的整数(若该数非0,则最高位不能为0). 注意: 1.加号与等号各自需要2根火柴棍: 2 ...
最新文章
- centos的ssh配置
- 设置timeout限制在爬虫中的运用
- table control的修改/排序/删除功能实现实例
- 常用的遍历文件夹批处理命令
- Zookeeper C API 基本常量和结构体介绍
- 设计模式的C语言应用-外观模式-第八章
- 永辉发布元宵数据:汤圆销售明显提升,多个民生产品增长超150%
- python类内置装饰器(一分钟读懂)
- android蓝牙历史
- matlab基本,MATLAB最基础教程
- 必须收藏的文档:IronPython脚本在TIBCO Spotfire中的使用
- 任务三、学生喂养三种宠物:猫、狗和鸟
- 文字图片滚动 jquery 实现代码
- H3C-S5560交换机设置
- overleaf使用指南 IEEE Access
- windows控制台cmd乱码解决方案
- 视频营销—网络营销的一种有效形式
- 【心得体会】2022年华为杯数学建模比赛参赛心得体会
- 【数据集】A Face Detection Benchmark
- iOS 用内置浏览器Safari 打开网页