1樓:
可以寫成動規:
DP[i][j]指的是當計算到字串第i個字元(Input[i - 1]),且左括號比右括號多j個時可能的序列個數。邊界條件DP[0][0] = 1,DP[i][-1] = DP[i][j] = DP[0][k] = 0 (i < j, k ≠ 0)。
以下演算法是O(n^2)的,不知道可不可以進一步優化。因為題目只要求輸出結果的個數,就不一一打出每一種序列了:
#include
#include
const
intkMaxLength=20
;int
main
(int
argc
,char
*argv
)memcpy
(prev
,current
,sizeof
(int)*
(max_diff+1
));}
printf
("%d\n"
,current[0
]);return0;}
2樓:「已登出」
更新了一下,因為沒有IDE,用vim寫的,所以之前編譯有bug,而linux下的gcc好像沒給出提示。換mac編譯發現了。
C語言用的不多,語法不是很地道,這邊就拋磚引玉了.主要方法是用遞迴.
#include
#include
charcs[
20];
intsize
;int
idx=0;
void
();int
valid
();int
calculate
();int
arraysize
();void
()printf("
\n");}
intvalid
()elseif(
cs[i]
==')')if
(sum
<0)}if(sum==0
)return0;
}int
calculate()}
if(flag
>=0)
elseif(
valid
())return
count;}
intarraysize
()returni+
1;}return20;
}int
main
()執行效果如下:
murphy$ ./a.out
input the char sequence:
(??)
possible sequence(s):
1. (())
2. ()()
total count: 2
murphy$ ./a.out
input the char sequence:
()??
possible sequence(s):
1. ()()
total count: 1
python 括號檢測是否匹配?
vzit 寫過乙個Python的lisp直譯器,括號匹配的原理就是遞迴堆疊,如果讀到最後沒有釋放就說明括號不匹配,時間複雜度為O n 彭泉鑫 符號表 SYMBOLS SYMBOLS L SYMBOLS R SYMBOLS values SYMBOLS keys def check s arr for...
畢業後工作與專業不匹配,該如何進行職業規劃?
海歸暖青年 看你之前也說過有的工作是自己選擇的不去,那就是期望跟目前情況不匹配吧 趁這個機會可以多考慮下之後的職業發展,看是不是只希望在本專業內。並不是說大學學的專業沒用上就是白學了。如果讓今年剛高考完的同學和你一起應聘,你對於工作的理解一定比普通高中生要多很多的。大學不止學的專業,它本身也是個小社...
如何進行考研?
是春天的風啊 考研的時候需要提前去了解一些訊息,掌握得越多對自己就越好。首先你要選是本專業考研還是跨專業考研,本專業會容易一點,跨專業就比較難 然後你要選幾個你心儀的院校,還要看看每年的報錄比,看看你要考的專業在那個學校有沒有什麼限制,這些都看好了就看看自己考英一還是英二,專業課要準備哪幾本書,多關...