算法学习之递归

您所在的位置:网站首页 24点计算题目100道 算法学习之递归

算法学习之递归

2023-09-19 17:34| 来源: 网络整理| 查看: 265

题目:给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。

现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里加减乘除以及括号的运算结果和运算的优先级跟我们平常的定义一致(这里的除法定义是实数除法)。 比如,对于5,5,5,1,我们知道5 * (5 – 1 / 5) = 24,因此可以得到24。又比如,对于1,1,4,2,我们怎么都不能得到24。

输入: 输入数据包括多行,每行给出一组测试数据,包括4个小于10个正整数。最后一组测试数据中包括4个0,表示输入的结束,这组数据不用处理。 输出: 对于每一组测试数据,输出一行,如果可以得到24,输出“YES”;否则,输出“NO”。 样例输入 5 5 5 1 1 1 4 2 0 0 0 0 样例输出 YES NO

题目分析:

n个数算24,必有两个数要先算。这两个数算的结果,和剩余n-2个数,就构成了n-1个数求24的问题 枚举先算的两个数,以及这两个数的运算方式。 注意:浮点数比较是否相等,不能用 ==

详细代码如下,对照注释仔细体会:

#include #include using namespace std; double a[5]; #define EPS 1e-6 //10^(-6),当浮点数小于这个数可认为是0(可以更小,如-8次方) bool isZero(double x){ //判断浮点数是否为0 return fabs(x)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3