在网上搜索了一下,已经有不少的实现的例子了,不过发现都不全面
我搜索到的都有一个误区,即:
四个数:a,b,c,d 四个运算符用?代替
第一步运算一定是从四个数中选两个出来进行四则运算如:a?b=e
第二步就是求:e?c?d的结果实际上,上面的e?c,如果用除法运算,就是e/c,至少漏了c/e的结果
e/c和c/e的结果是完全不一样的象网上那些算法就无法得出:8/(3-8/3)的结果我思考了半天,没有好的思路,大家有吗?
最好有代码
我搜索到的都有一个误区,即:
四个数:a,b,c,d 四个运算符用?代替
第一步运算一定是从四个数中选两个出来进行四则运算如:a?b=e
第二步就是求:e?c?d的结果实际上,上面的e?c,如果用除法运算,就是e/c,至少漏了c/e的结果
e/c和c/e的结果是完全不一样的象网上那些算法就无法得出:8/(3-8/3)的结果我思考了半天,没有好的思路,大家有吗?
最好有代码
解决方案 »
- 并非所有的代码路径都返回值
- c#编译问题:代码无误,为何不达效果?
- asp.net mvc怎么输出多个数据源
- sql server 2008 外网访问 问题
- c#中如何删除字符串中的子串
- 请教asp.net程序打包的问题
- 怎样给控件里的按钮传动作?
- 都来给点建议吧!~我在武汉做IT培训一月有3K 去上海转做开发能拿多少呢?
- 江湖救急—关于网络信息的获取?欢迎进贴看看,交个朋友,哥哥不限,姐姐也不限!
- 数据库中Customer表(主键CustomerID)>DataAdapter>DataSet后,DataTable的PrimaryKey属性会自动成为"CustomerID"列吗?
- 如何获取应用程序列表呢,就像任务管理器那样的??
- 请问简单问题: 在新闻网站首页用跑马灯显示最新新闻前10条,都要用超连接方式.
其实算法中,只要e /c 不能得到整数就将被忽略。
这句是能够得出24的结果的,只是遍历时,不是很容易遍历到这个地方
showjancn(难得一剑)
e / c 和c /e 两种情况只需考虑一种,别外一种没意义。
其实算法中,只要e /c 不能得到整数就将被忽略。
-----------------------------------------------------
你这种想法好像很多人都是这么想的,但是如果非要考虑得不到整数的情况呢?
而且8/(3-8/3)这个,据说是微软的一道面试题。
比如:
------
第一步运算一定是从四个数中选两个出来进行四则运算如:a?b=e
第二步就是求:e?c?d的结果
------那么,可以在第一步做个分支,一个原样a?b=e,一个是b?a=f
第二步应该是第一步的递归,不要e?c?d,那样漏掉的更多。
24点有一个很重要的规则,就是所有的计算结果都是正整数或0
不对
比如 2 4 10 10
就要 (4/10+2)×10
arr[0],arr[1],arr[2],arr[3]
arr[0],arr[1],arr[3],arr[2]
arr[0],arr[3],arr[2],arr[1]
arr[0],arr[3],arr[1],arr[2]
arr[0],arr[2],arr[3],arr[1]
arr[0],arr[2],arr[1],arr[3]arr[1],arr[0],arr[2],arr[3]
arr[1],arr[0],arr[3],arr[2]
arr[1],arr[3],arr[2],arr[0]
arr[1],arr[3],arr[0],arr[2]
arr[1],arr[2],arr[3],arr[0]
arr[1],arr[2],arr[0],arr[3]arr[2],arr[1],arr[0],arr[3]
arr[2],arr[1],arr[3],arr[0]
arr[2],arr[3],arr[0],arr[1]
arr[2],arr[3],arr[1],arr[0]
arr[2],arr[0],arr[3],arr[1]
arr[2],arr[0],arr[1],arr[3]arr[3],arr[1],arr[2],arr[0]
arr[3],arr[1],arr[0],arr[2]
arr[3],arr[0],arr[2],arr[1]
arr[3],arr[0],arr[1],arr[2]
arr[3],arr[2],arr[0],arr[1]
arr[3],arr[2],arr[1],arr[0]然后针对上面的每一种组合,比如:arr[0],arr[1],arr[2],arr[3]
1)计算arr[0]和arr[1]的6种运算结果k1:a+b,a-b,a*b,a/b, b-a, b/a
2)计算k1和arr[2]的6种运算结果k2
3)计算k2和arr[3]的6种运算结果k3
如果(k3*10)取整=240 (乘10是为了防止24.01和23.99的情况)
就输出
http://beinet.cn/blog/default.aspx?tid=38