题目描述:
给定4个数字,判定这4个数字是否可以通过运算得到结果24。运算操作包括:加、减、乘、除,允许变换数字的顺序,允许使用括号改变运算顺序。
即:判定是否存在一种通过在下面的圆圈中添加运算符以及添加括号的方式使得等式成立:
a ○ b ○ c ○ d = 24
例:数字 5, 5, 5, 1 可以通过运算得到结果24:
5 × (5 - 1 ÷ 5) = 24
数字 9, 9, 9, 9 则无论通过怎样的运算都无法得到24的结果。
解答:
本题还是比较简单的,由于数据量比较少,因此可以采用暴力搜索的方式进行解答,枚举所有的可能的运算方式,如果有1种方案可以达到24,则表明给定的数据有解,否则无解。
枚举的方式如下:
由于加法和乘法满足交换律,而减法和出发则不满足,这里我们添加两种运算:“反减”和“反除”,分别记作 ~- 和 ~÷,此时:
a ~- b = b - a
a ~÷ b = b ÷ a
添加这两种运算操作后,就使得减法和除法也同样符合交换律。此时,所有情况的运算顺序就只有两种情况,用※表示任意的运算符,则两种运算顺序为:
((a ※ b)
给定4个数字,判定这4个数字是否可以通过运算得到结果24。运算操作包括:加、减、乘、除,允许变换数字的顺序,允许使用括号改变运算顺序。
即:判定是否存在一种通过在下面的圆圈中添加运算符以及添加括号的方式使得等式成立:
a ○ b ○ c ○ d = 24
例:数字 5, 5, 5, 1 可以通过运算得到结果24:
5 × (5 - 1 ÷ 5) = 24
数字 9, 9, 9, 9 则无论通过怎样的运算都无法得到24的结果。
解答:
本题还是比较简单的,由于数据量比较少,因此可以采用暴力搜索的方式进行解答,枚举所有的可能的运算方式,如果有1种方案可以达到24,则表明给定的数据有解,否则无解。
枚举的方式如下:
由于加法和乘法满足交换律,而减法和出发则不满足,这里我们添加两种运算:“反减”和“反除”,分别记作 ~- 和 ~÷,此时:
a ~- b = b - a
a ~÷ b = b ÷ a
添加这两种运算操作后,就使得减法和除法也同样符合交换律。此时,所有情况的运算顺序就只有两种情况,用※表示任意的运算符,则两种运算顺序为:
((a ※ b)