美文网首页
给定多项式任意加括号求所有输出结果

给定多项式任意加括号求所有输出结果

作者: autisticBoy | 来源:发表于2019-01-02 21:01 被阅读0次

问题描述

20171223103914818.png

基本思路:分治

代码

class Solution {
public:
    vector<int> diffWaysToCompute(string input) {
        vector<int> res;
        for(int i = 0; i < input.size(); ++i)//枚举串的每个位置
        {
            //如果是操作符,就将左右两边分开
            if(isOperator(input[i]))
            {
                //返回左边和右边的所有可能结果
                vector<int> lhs = diffWaysToCompute(input.substr(0, i));
                vector<int> rhs = diffWaysToCompute(input.substr(i + 1));
                //依次组合,因为返回之前考虑了为空的情况,所以这里无需判断是否为空
                for(auto n1 : lhs)//对于左边的每一个数,枚举右边的数,记录这两个数进行第i位操作符后产生的结果
                {
                    for(auto n2 : rhs)
                    {
                        if(input[i] == '+') res.emplace_back(n1 + n2);
                        else if(input[i] == '-')    res.emplace_back(n1 - n2);
                        else    res.emplace_back(n1 * n2);
                    }
                }
            }
        }
        if(res.empty())
        {
            //可以添加一条语句判断input是空字符的情况
            //if(input.empty()) input.append(1, '0');
            int n = 0;
            sscanf(input.c_str(), "%d", &n);
            res.emplace_back(n);
        }
        return res;
    }
private:
    bool isOperator(char op)
    {
        return op == '+' || op == '-' || op == '*';
    }
};

举例子

23-45
如果现在是第一个*
左边就是2,右边就是3-45,对于右边的递归调用 可能是-5,-17,然后用动态数组res添加枚举的两个数,即2-5与2*-17

相关文章

  • 给定多项式任意加括号求所有输出结果

    问题描述 基本思路:分治 代码 举例子 23-45如果现在是第一个*左边就是2,右边就是3-45,对于右边的递归调...

  • 基于C++的一元多项式的计算

    1 问题描述 将多个多项式输入并存储在内存中,然后对多项式进行加、减运算并输出结果。 2 数据结构描述 一元多项式...

  • LeetCode 22 [Generate Parenthese

    原题 给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。 样例给定 n = 3, 可生成的...

  • 2020-05-31记负均正II

    题目描述从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数输入描述:输入任意个整数输出...

  • 05-列表

    一、输出函数 print() 函数功能: 在控制台打印括号里面所有、任意类型的内容技巧:a.每一次输出之后,都会默...

  • 判断括号匹配问题

    问题描述 给定一个字符串,其中的字符包含任意字符包括三种括号:花括号{ }、中括号[ ]、圆括号( )。设计算法,...

  • 面试题 16.26. 计算器

    题目描述: 给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 表达...

  • 530. 二叉搜索树的最小绝对差

    给定一个所有节点为非负值的二叉搜索树,求树中任意两节点的差的绝对值的最小值。 示例 : 输入: 13/2 输出:1...

  • PAT甲级 1002 A+B for Polynomials

    原题链接 1002 A+B for Polynomials (25 分) 【题目大意】给定两个多项式A和B,输出 ...

  • 17-11-17

    作业一:累加求加 作业二:累加求加(二) 作业三:累加求加(三) 作业五:限定输出(二) 作业六:限定输出(三) ...

网友评论

      本文标题:给定多项式任意加括号求所有输出结果

      本文链接:https://www.haomeiwen.com/subject/xoptrqtx.html