生成括号组合
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;
}
posted on 2013-07-03 17:21 jumping_grass 阅读(181) 评论(0) 收藏 举报
浙公网安备 33010602011771号