題目描述
給定n對括號,編寫乙個函式來生成正確括號的所有組合。
例如,給定n = 3,解決方案集合為:
「((()))」,「(()())」,「(())()」,「()(())」,「()()()」
/*
採用遞迴
每次左括號比右括號多時可以加左括號或者右括號
如果左括號等於右括號則只能加左括號
左括號夠了那就只加右括號
右括號夠了那就只加左括號
*/void generate(vector
&v,int x,int y,string s)
if(x==0&&y>0)
if(y==0&&x>0)
if(x//左括號比右括號多,既可以(又可以)
generate(v,x-1,y,s+"(");
generate(v,x,y-1,s+")");
return;
}if(x>=y)
}vector
generateparenthesis(int n)
leetcode刷題(51) 22 括號生成
給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 思路 只要有左括號就可以新增 class solution public void helper int left,int right,string str if left 0 ...
演算法刷題筆記 括號生成
請你寫乙個演算法,輸入是乙個正整數n,輸出是n對兒括號的所有合法組合,比如說,輸入n 3,輸出為如下 5 個字串 c include include include using namespace std 可用的左括號數量為 left 個,可用的右括號數量為 rgiht 個 void backtra...
演算法練習 括號組合生成
給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 比較簡單的方法 遞迴吧 1.輸入n之後說明現在有n個左括號和n個右括號可以填 2.最左面一定是左括號,最右面一定是右括號 3.考慮n 1個左右括號時有多少種排列 4.將最左或者最...