#include<string>#include<vector>#include<iostream>
using namespace std;
class Solution {
public:
vector<int>diffWaysToCompute(string input){
vector<int> result;int size = input.size();for(int i =0; i < size; i++){char cur = input[i];if(cur =='+'|| cur =='-'|| cur =='*'){// Split input string into two parts and solve them recursively
vector<int> result1 =diffWaysToCompute(input.substr(0, i));
vector<int> result2 =diffWaysToCompute(input.substr(i +1));for(auto n1 : result1){for(auto n2 : result2){if(cur =='+')
result.push_back(n1 + n2);elseif(cur =='-')
result.push_back(n1 - n2);else
result.push_back(n1 * n2);}}}}// if the input string contains only numberif(result.empty())
result.push_back(atoi(input.c_str()));return result;}};intmain(int argc,char* agrv[]){
Solution* solution = new Solution();
string s ="2*3-4*5";
vector<int> res = solution->diffWaysToCompute(s);for(auto r : res)
std::cout << r << endl;system("pause");return0;}