leetcode_c++:Divide and Conquer:Different Ways to Add Parentheses(241)
来源:互联网 发布:windows 10如何截图 编辑:程序博客网 时间:2024/06/11 10:54
Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +, - and *.
Example 1
Input: “2-1-1”.
((2-1)-1) = 0
(2-(1-1)) = 2
Output: [0, 2]
Example 2
Input: “2*3-4*5”
(2*(3-(4*5))) = -34
((2*3)-(4*5)) = -14
((2*(3-4))*5) = -10
(2*((3-4)*5)) = -10
(((2*3)-4)*5) = 10
Output: [-34, -14, -10, -10, 10]
#include <bits/stdc++.h>using namespace std;const int N = 110;class Solution {private: vector<int> dp[N][N]; vector<int> helper(string& input, int l, int r) { if (!dp[l][r].empty()) return dp[l][r]; vector<int> &ans = dp[l][r]; bool isNum = true; int num = 0; for (int i = l; i < r; ++i) { if (!isdigit(input[i])) { isNum = false; vector<int> L = helper(input, l, i), R = helper(input, i + 1, r); for (auto l : L) for (auto r : R) { if (input[i] == '+') ans.push_back(l + r); else if (input[i] == '-') ans.push_back(l - r); else ans.push_back(l * r); } } if (isNum) num = num * 10 + (input[i] - '0'); } if (isNum) ans.push_back(num); return ans; }public: vector<int> diffWaysToCompute(string input) { return helper(input, 0, input.length()); }};int main() { Solution s; vector<int> ans; // ans = s.diffWaysToCompute("0+1"); // for (auto i : ans) cout << i << ' '; // cout << endl; // ans = s.diffWaysToCompute("2-1-1"); // for (auto i : ans) cout << i << ' '; // cout << endl; ans = s.diffWaysToCompute("2*3-4*5"); for (auto i : ans) cout << i << ' '; cout << endl; return 0;}
0 0
- leetcode_c++:Divide and Conquer:Different Ways to Add Parentheses(241)
- 241. Different Ways to Add Parentheses(divide and conquer)
- [Divide and Conquer]241. Different Ways to Add Parentheses
- 【算法】【Divide and conquer】Different Ways to Add Parentheses
- Divide and Conquer -- Leetcode problem241:Different Ways to Add Parentheses
- Divide and Conquer:241. Different Ways to Add Parentheses
- Leetcode divide & conquer || Different Ways to Add Parentheses
- Divide and Conquer (1) -- Kth Largest Element in an Array,Different Ways to Add Parentheses
- leetCode刷题归纳-Divide and Conquer(241. Different Ways to Add Parentheses)
- leetcode_c++:Divide and Conquer:Expression Add Operators(282)
- leetcode 241 Different Ways to Add Parentheses
- Leetcode 241- Different Ways to Add Parentheses
- Leetcode #241 Different Ways to Add Parentheses
- 241-Different Ways to Add Parentheses
- [leetcode 241]Different Ways to Add Parentheses
- LeetCode(241)Different Ways to Add Parentheses
- leetcode 241: Different Ways to Add Parentheses
- [LeetCode 241] Different Ways to Add Parentheses
- 构造函数你真的看懂了吗
- 《图数据库》(人民邮电出版社)读书笔记一、二
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- True Nobility(《真正的高贵》)By Ernest Hemingway(海明威)
- C++11新特性
- leetcode_c++:Divide and Conquer:Different Ways to Add Parentheses(241)
- netty NioServerSocketChannel注册流程一
- JavaScript对象的property属性详解
- 根据字符串长度动态计算UILabelView的高度
- shell编程入门
- jsp增加c和fn标签
- 约瑟夫环问题
- 顺序表--Java实现
- Java语言在测试平台的多用例输入格式