枚举法解决“给定运算数字和结果,列举出所有可能的问题如5 5 5 5 5 = 5”

这篇博客探讨了如何使用枚举法解决形如5 5 5 5 5 = 5的问题,即给定5个数字和一个结果,找到所有可能的四则运算组合使等式成立。文章指出,虽然手动解决可能繁琐且易遗漏,但通过编写程序可以简化这一过程,同时考虑了运算符的优先级和除数不能为0的条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

形如 5 5 5 5 5 = 5这样的式子,要求给定5个数字,同时给定一个结果;
在这五个数字之间可以填写不同的运算符号,最终使这个等式成立,试通过列出所有的可能。

分析:

这样的题在中小学时候见过不少,只是单纯的求出一种可能比较简单,但要是求解出所有的可能结果,工作量很繁琐,
人工计算也可能有遗漏。要是在程序中通过代码将数学公式写出来就会简单很多。
四则运算中乘除运算优先于加减运算,在进行除法运算时,除数不能为0。
为了解决运算优先级问题,使用left和right变量来保存中间运算结果;

#include<iostream>
using namespace std;
int main()
{
	int num[5],i[4],sign,result,count = 0;             //五个数字,四个运算符号,符号标志(加减运算需要),结果,计数器
	float left, right;                                 //优先级,左右两边保存之前的结果,方便解决运算优先的问题,int是向下取整,会影响结果准确性,在这定义为float型
	char oper[4] = {'+', '-', '*', '/' };              //运算符集合
	cout << "Please input 5 numbers:";
	for (int j = 0; j < 5; j++)
	{
		cin >> num[j];
	}
	cout << "Please  input the result :";
	cin >> result;
	for (i[0] = 0; i[0] < 4; i[0]++)                   //0,1,2,3分别表示+,-,*,/;
	{
		if ((i[0] < 3) || (num[1] != 0))               //除数不能为0;
		{
			for (i[1] = 0; i[1] 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值