您的位置:首页 > Web前端

LeetCode(241) Different Ways to Add Parentheses

2015-08-29 13:18 337 查看
在写递归程序时,我不能追踪整个调用过程,如果我这样做,随着递归过程的不断深入,我会觉得累,没有脑力,也没有精力,最终迷失在调用过程,不知道自己在干什么,处于什么方位。

我只能关注衔接,

只能关注各种衔接

两层调用树之间的衔接,衔接,可能这就是递归编程的本质

至于衔接出来的是何物已经由各种衔接决定,是什么就是什么




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;

    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: