生成括号组合

 

    void generate( int n_match, int sum, vector<string>& v )
    {
        if( n_match < sum )
        {
            vector<string> v1 = v;
            vector<string> v2 = v;
            v.clear();
            
            for( int i=0; i<v1.size();i++ )
                v1[i] = v1[i] + "(";
            generate( n_match+1, sum, v1 ) ;
            for( int i=0; i<v1.size();i++ )
                v.push_back( v1[i] ); 
            
            if( n_match > 0 )
            {
                for( int i=0; i<v2.size();i++ )
                    v2[i] = v2[i] + ")";
                generate( n_match - 1, sum-1, v2 ) ;  
                for( int i=0; i<v2.size();i++ )
                    v.push_back( v2[i] ); 
                
            }
            
            return ;       
        }    
         
        if( n_match  ==  sum )
        {
            for( int i=0;i<v.size(); ++i )
            {
                for( int j=0; j< sum; j++ )
                    v[i] = v[i] + ")";
            }
            return ;
        }
        
    }
    vector<string> generateParenthesis(int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        vector<string> v;
        if( n == 0 )
            return v;
            
        string s = "";
        v.push_back(s);
        generate( 0,  n,  v );
        return v;
        
    }

 

原文链接: https://www.cnblogs.com/jumpinGGrass/p/3169914.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    生成括号组合

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/94460

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午2:38
下一篇 2023年2月10日 上午2:38

相关推荐