LeetCode(241) Different Ways to Add Parentheses
2015-08-29 13:18
337 查看
在写递归程序时,我不能追踪整个调用过程,如果我这样做,随着递归过程的不断深入,我会觉得累,没有脑力,也没有精力,最终迷失在调用过程,不知道自己在干什么,处于什么方位。
我只能关注衔接,
只能关注各种衔接
两层调用树之间的衔接,衔接,可能这就是递归编程的本质
至于衔接出来的是何物已经由各种衔接决定,是什么就是什么
![](http://img.blog.csdn.net/20150829131707413)
c++代码如下
我只能关注衔接,
只能关注各种衔接
两层调用树之间的衔接,衔接,可能这就是递归编程的本质
至于衔接出来的是何物已经由各种衔接决定,是什么就是什么
c++代码如下
[code]class Solution { public: vector<int> diffWaysToCompute(string input) { vector<int> result; //first kind join int k = 0; while(k < input.size()) if(isdigit(input[k])) k++; else break; if(input.size() == k) { result.push_back(stoi(input)); return result; } //second kind join for(int i = 0; i < input.size(); i++) { if(isdigit(input[i])) continue; vector<int> leftRe = diffWaysToCompute(input.substr(0, i)); vector<int> rightRe = diffWaysToCompute(input.substr(i + 1)); for(int m = 0; m < leftRe.size(); m++) { for(int n = 0; n < rightRe.size(); n++) { if(input[i] == '+') result.push_back(leftRe[m] + rightRe ); if(input[i] == '-') result.push_back(leftRe[m] - rightRe ); if(input[i] == '*') result.push_back(leftRe[m] * rightRe ); } } } return result; } };
相关文章推荐
- 《剑指Offer》:移除字符串中重复的字符
- jquery input change事件
- jquery一个控件绑定多个事件
- Web前端开发规范文档
- Delete Node in a Linked List 单链表删除节点
- jquery datatable使用
- HTML URL 编码
- JavaScript中常见的字符串操作函数及用法
- Javascript包含对象的数组去重
- treegrid.bootstrap使用说明
- 配置JSP的默认首页
- 使用Jsoup消除不受信任的HTML (来防止XSS攻击)
- 使用 Bootstrap 和 HTML5 Boilerplate 开始一个项目
- JavaScript中函数函数的定义与变量的声明<基础知识一>
- js、jquery验证时间格式
- Bootstrap
- ByteBuffer用法小结
- NodeJS 读取XML文件
- 瀑布流布局——jquery
- js 验证身份证格式