刷題 生成正確括號組合

2021-08-18 08:51:07 字數 548 閱讀 1260

題目描述

給定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.將最左或者最...