编写一个函数,将输入的3个数字进行四则运算看是否可以得出二十一。


/* 编写一个函数,将输入的3个数字进行四则运算看是否可以得出二十一。
如 3,7,1. 输出结果为1(表示可以,因为3*7*1 = 21). 
只用 + - * /四则运算
*/

小弟没想出什么特别好的处理办法,难道要把所有情况都写出来测试一下么?期待各位大神指导!C、C++都可以

8 个解决方案

#1


这个跟前几天讨论过的一个24点问题比较像,不过比那个简单。
提供个简单的思路吧:3个数共有3种组合方式((1,7,3)和(7,1,3)看作同一种),然后分三次进行四则运算。运算方式采取先结合前两个数,然后结合第三个数的方式,一共需要8次运算。

#2


引用 1 楼 zhaozero41 的回复:
这个跟前几天讨论过的一个24点问题比较像,不过比那个简单。
提供个简单的思路吧:3个数共有3种组合方式((1,7,3)和(7,1,3)看作同一种),然后分三次进行四则运算。运算方式采取先结合前两个数,然后结合第三个数的方式,一共需要8次运算。


除法要另外处理下

#4


应该用穷举吧。简单,也不会太耗时。

#5


我觉得应该先判断一下这三个数的大小吧 如果三个数都小于等于4的话 那肯定不可能了  然后再考虑穷举 

#6


引用 5 楼  的回复:
我觉得应该先判断一下这三个数的大小吧 如果三个数都小于等于4的话 那肯定不可能了  然后再考虑穷举


(3+4)*3
我说的那个思路我已经用代码实现了,应该是没错的

#7


我以为不能加括号呢 

#8


这样啊  我以为不能加括号呢 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2018 ITdaan.com 粤ICP备14056181号