1. 程式人生 > >給定n對括號,編寫一個函式來生成正確括號的所有組合。

給定n對括號,編寫一個函式來生成正確括號的所有組合。

本題源自leetcode

-----------------------------------------------------------------------------------------------

思路:

 1  用回溯法。用變數m 表示左括號的數量。n表示一共要插入括號的數量。則當m大於0 可以插入右括號。當n 大於 0 可以插入左括號

程式碼:

vector<string> generateParenthesis(int n) {
        if(n==0)
            return vector<string>();
        vector<string> res;
        backPath(res,"",n,0);
        return res;
    }
    void backPath(vector<string>& res,string s,int n,int m){
        if(n==0&&m==0){
            res.push_back(s);
            return ;
        }
        if(n>0)
            backPath(res,s+"(",n-1,m+1);
        if(m>0)
            backPath(res,s+")",n,m-1);
    }