如何進行括號匹配

時間 2021-06-18 21:51:03

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

print

();int

valid

();int

calculate

();int

arraysize

();void

print

()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...

畢業後工作與專業不匹配,該如何進行職業規劃?

海歸暖青年 看你之前也說過有的工作是自己選擇的不去,那就是期望跟目前情況不匹配吧 趁這個機會可以多考慮下之後的職業發展,看是不是只希望在本專業內。並不是說大學學的專業沒用上就是白學了。如果讓今年剛高考完的同學和你一起應聘,你對於工作的理解一定比普通高中生要多很多的。大學不止學的專業,它本身也是個小社...

如何進行考研?

是春天的風啊 考研的時候需要提前去了解一些訊息,掌握得越多對自己就越好。首先你要選是本專業考研還是跨專業考研,本專業會容易一點,跨專業就比較難 然後你要選幾個你心儀的院校,還要看看每年的報錄比,看看你要考的專業在那個學校有沒有什麼限制,這些都看好了就看看自己考英一還是英二,專業課要準備哪幾本書,多關...