NYOJ 15 括號匹配(二) 區間DP

2021-07-30 19:33:42 字數 1141 閱讀 1346

/*

括號匹配(二)

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:6

描述給你乙個字串,裡面只包含"(",")","[","]"四種符號,請問你需要至少新增多少個括號才能使這些括號匹配起來。

如:是匹配的

()是匹配的

((]是不匹配的

([)]是不匹配的

輸入第一行輸入乙個正整數n,表示測試資料組數(n<=10)

每組測試資料都只有一行,是乙個字串s,s中只包含以上所說的四種字元,s的長度不超過100

輸出對於每組測試資料都輸出乙個正整數,表示最少需要新增的括號的數量。每組測試輸出佔一行

樣例輸入4

()((]

([)]

樣例輸出00

32區間dp,二維陣列儲存需要新增的括號的個數,dp[i][j]表示從第i位到第j位區間需要新增的括號數,

當i==j時,dp[i][i]所選區間只有乙個括號,所以dp[i][i]=1;

例如: cc] 長度為 3

需要在(0,2)的區間找值

(0,2)可以分成(0,1),(2,2) 或者  (0,0),(1,2)  兩者中取最小

(0,2)  中的(0,1)  分為 (0,0)(1,1)的子區間      (2,2)

(0,2)  中的(1,2)  分為 (1,1)(2,2)的區間      (0,0)   兩者取最小

dp[i][j]

0   1    2

0   1   2    3

1   0   1    2

2   0   0    1  */

#include #include #include using namespace std; 

const int max = 101;

int dp[max][max];

char s[101];

int main()

for(width = 1; width < length; width++) // 區間長度

} }

printf("%d\n",dp[0][length-1]);

} return 0;

}

NYOJ 15 括號匹配(二)區間dp

時間限制 1000 ms 記憶體限制 65535 kb 難度 6 描述 給你乙個字串,裡面只包含 四種符號,請問你需要至少新增多少個括號才能使這些括號匹配起來。如 是匹配的 是匹配的 是不匹配的 是不匹配的 輸入第一行輸入乙個正整數n,表示測試資料組數 n 10 每組測試資料都只有一行,是乙個字串s...

NYOJ15 括號匹配(二)(區間dp)

時間限制 1000 ms 記憶體限制 65535 kb 難度 6 描述 給你乙個字串,裡面只包含 四種符號,請問你需要至少新增多少個括號才能使這些括號匹配起來。如 是匹配的 是匹配的 是不匹配的 是不匹配的 輸入第一行輸入乙個正整數n,表示測試資料組數 n 10 每組測試資料都只有一行,是乙個字串s...

NYOJ15 括號匹配 二 區間DP

pid 15 dp i j 表示從i到j至少須要加入多少個括號才幹滿足匹配條件.初始化 if i j dp i j 1 else dp i j inf 狀態轉移 當i j時 if match str i str j dp i j min dp i j d i 1 j 1 然後切割區間,找最優切割點k...