我想一定还有更好的算法,还有,其中关键的函数GetResults()能否用递归实现?
希望大家能提出宝贵的建议和意见,在上班之余共同探讨一下。

解决方案 »

  1.   

    直接穷举所有可能的后缀表达式然后验证之,思路非常好
    我觉得没必要用抵归,多种循环看起来不爽,但具体地看在【这里】很适合
    在这里用抵归带来的函数调用和退栈开销可能大于多重循环不过,要打击你一下 :)
    你这个算法是有问题的
    对于8,8,3,3, 你的算法就出错了——8/(3-8/3)=24,但你的程序说不存在解为什么呢? 我觉得原因在于:
    你的算法只穷举了所有型如“[数字1][数字2][运算符1][数字3][运算符2][数字4][运算符3]”的表达式
    但是还有【很多很多】表达式你忽略了,比如型如“[数字1][数字2][数字3][数字4][运算符1][运算符2][运算符3]”的——即对应于8/(3-8/3)=24的“8 3 8 3 / - /”等等
    我的email是[email protected],欢迎一齐讨论
      

  2.   

    pdsinfo(新手) 说得非常正确,当时的确没有认真考虑后缀表达式,看来我的算法要重写