282. 给表达式添加运算符

282. 给表达式添加运算符

题目描述

点这里

思路分析

用a+b*X的结构维护一个暴搜

代码实现

class Solution {
    
    
public:
typedef long long LL;
    vector<string> ans;
    string path;
    vector<string> addOperators(string num, int target) {
    
    
        path.resize(100);
        dfs(num,0,0,0,1,target);
        return ans;
    }
    void dfs(string& num,int u,int len,LL a,LL b,LL target){
    
    
        if(u== num.size()){
    
    
            if(a==target) ans.push_back(path.substr(0,len-1));
            return;
        }
        LL c=0;
        for(int i=u;i<num.size();i++){
    
    
            c=c*10+num[i]-'0';
            path[len++]=num[i];

            //+
            path[len]='+';
            dfs(num,i+1,len+1,a+b*c,1,target);
            if(i+1<num.size()){
    
    
                //-
                path[len]='-';
                dfs(num,i+1,len+1,a+b*c,-1,target);
                //*
                path[len]='*';
                dfs(num,i+1,len+1,a,b*c,target);
            }
            if(num[u]=='0') break;
        }
    }
};

おすすめ

転載: blog.csdn.net/qq_50757994/article/details/121418575