問題描述
由1對括號,可以組成一種合法括號序列:()。
由2對括號,可以組成兩種合法括號序列:()()、(())。
由4對括號組成的合法括號序列一共有多少種?
如果手算的話,三個的情況有()()()、(())()、()(())、((()))、(()())五種,那麼四個的合法括號的形式就是在三個的基礎上再加乙個括號,可以把()三個括號、三個括號()、(三個括號在裡面)、在三個括號的裡面插入乙個括號的方式的到四個括號的合法方式。
題解:
沒想到遞迴就可以得到結果,我還一直用排列組合計算,失策了
一般需要所有情況並且判斷對錯的使用遞迴是不錯的方法
遞迴可以實現無數層次的for迴圈
#include
#include
using
namespace std;
int n;
int count=0;
char s[
1000];
void
solve
(int l,
int r)
s[l+r]
='('
;solve
(l+1
,r);
//相當於乙個'('可以抵消掉乙個')'
if(l>r)
}int
main()
合法的括號
給定字串,只包含以下括號 and 判斷輸入是否合法。括號匹配必按照要求 and 而不是 and 格式 輸入包含多行,每一行輸入乙個長度不超過80的字串,直到遇到結束符為止。每一行輸入只包含以上括號,如果合法,輸出true,否則false。輸入 輸出 false 解題思路 逐個遍歷,如果遇到左括號就壓...
合法括號序列
合法括號序列 鍵盤上有左括號 右括號 和退格鍵 共三個鍵。牛牛希望按鍵n次,使得輸入的字串恰好乙個合法的括號序列。每按一次左括號 字串末尾追加乙個左括號 每按一次右括號 字串末尾追加乙個右括號 每按一次退格鍵 會刪掉字串的最後乙個字元,特別的,如果字串為空,牛牛也可以按退格,但是什麼都不會發生。輸出...
最長合法括號
給乙個只由 和 組成的字串,找出其中最長的連續合法子串長度。leetcode input output 2 input output 4 input output 4很明顯,可以用動態規劃,我也是這麼想的。構建dp len len dp i j 表示以i開頭,j結尾的子串中最長子串。s表示字串,然後...