永恒的争议 2017-06-16 08:04 采纳率: 0%
浏览 1428
已结题

一道有关表达式树的问题

题目描述
本步骤要求给定四个数字, 生成四个数字能构成的所有表达式树 。

本题要求生成的表达式树有次序,一个模糊的思路如下:

void gen_expression_tree(BiTree &t, int num) 

{ 

 for(int i = 1; i < num; i++) {       

     t->data = “+-*/”中的一者 //按次序枚举

     gen_expression_tree(t->lchild, i); 

     gen_expression_tree(t->rchild, num - i);
 } 

}

num是树中的数字个数。当num=1时,为叶子结点,结点的data域应该是数字,数字的出现次序也是有序的。

输入
输入仅一行,四个由空格分开的整数,整数的值在[1,13]之间。
输出
按序输出四个数字能构成的所有表达式树,每个表达式树一行,输出表达式树的全括号表达式。一个硬性的要求是必须采用类似上面的递归算法。

例如输入1 2 3 4时,应该产生的输出前面部分如下(因为空间限制,我们在sample Output部分给出了输出的最后部分,但整体上依然不完整):

(1+(2+(3+4)))
(1+(2+(4+3)))
(1+(2+(3-4)))
(1+(2+(4-3)))
(1+(2+(3*4)))
(1+(2+(4*3)))
(1+(2+(3/4)))
(1+(2+(4/3)))
(1+(3+(2+4)))
(1+(3+(4+2)))
(1+(3+(2-4)))
(1+(3+(4-2)))
(1+(3+(2*4)))
(1+(3+(4*2)))
(1+(3+(2/4)))
(1+(3+(4/2)))
(1+(4+(2+3)))
(1+(4+(3+2)))
(1+(4+(2-3)))
(1+(4+(3-2)))
(1+(4+(2*3)))
(1+(4+(3*2)))
(1+(4+(2/3)))
(1+(4+(3/2)))
(1+(2-(3+4)))
题目是这样的,输出答案这里只有一部分,
请问这道题要怎么做,有人可以提供一个思路吗,或者代码,一部分也可以

  • 写回答

1条回答 默认 最新

  • JeemyJohn 博客专家认证 2017-06-23 12:10
    关注

    这里可以利用递归和栈的方式穷举实现,而且还要满足括号必须出现在合适的位置等

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog