南陽理工學院動態規劃專題 括號問題2 總結

2021-06-17 20:05:25 字數 1972 閱讀 8710

南陽理工學院動態規劃專題括號問題2總結

這道題目初看起來很簡單,但是我從看題到思考,到做題ac足足花了乙個晚上加乙個下午的時間,我也有到網上找**的習慣,但是都是遞迴,特別蛋疼,我想用正統的動歸去做,於是就開始了不一樣的艱難探索之旅。

分析過程:

使用char str[1001]這個字元陣列儲存最初輸入的括號序列,使用dp[1001][1001]這個陣列儲存中間結果,dp[i][j]的意思是從下標為i的字元到下標為j的字元的子問題最少要加多少個括號才能規範化。首先dp陣列初始化為零,顯然dp[i][i]=1;至於dp[i][i+1],當str[i][i+1]配對的時候=0,當str[i][i+1]不配對的時候=2;到了這一步初始化工作結束。

如果str[i]和str[j]配對則分為兩種情況: 1.

i->(…)(…)<-j,則dp[i][j]=min; 2.

i->(..(..)..)<-j,則dp[i][j]=dp[i+1][j-1],因為之前dp[i+1][j-1]已經計算過,因此直接使用即可。

如果str[i]和str[j]不配對分為四種情況: 1.

在str[i+1]到str[j]的字串當中有與str[i]配對的括號,其對應的下標序列為k1,k2,k3,…

則dp[i][j]=min;

2.當不存在與str[i]相匹配的括號時直接使用dp[i][j]=dp[i+1][j]+1;

3.在str[i]到str[j-1]的字串當中有與str[j]配對的括號,其對應的下標序列為k1,k2,k3,…

則dp[i][j]=min;

4.不存在與str[i]相匹配的括號時直接使用dp[i][j]=dp[i][j-1]+1;

計算完成後dp[0][strlen(str)-1]即是計算結果。

ac**:

#include#include#include#define inf 100000000

using namespace std;

char str[101];

int dp[101][101];

bool match(char ch1,char ch2)

int main()

int min2=dp[i+1][j-1];

dp[i][j]=min(min1,min2);

}else

}int min2=dp[i+1][j]+1;

int min3=in

for(intkk=i+1;kkt)

min1=t;}}

int min4=dp[i][j-1]+1;

dp[i][j]=min(min(min1,min2),min(min3,min4));}}

}cout<

括號匹配(二)

時間限制:1000 ms  | 

記憶體限制:65535 kb

難度:6

描述

給你乙個字串,裡面只包含"(",")","[","]"

四種符號,請問你需要至少新增多少個括號才能使這些括號匹配起來。如:

是匹配的

()是匹配的

((]是不匹配的

([)]

是不匹配的

輸入

第一行輸入乙個正整數n

,表示測試資料組數(n<=10)

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

輸出

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

樣例輸入4

() ((]

([)]

樣例輸出0

0 3

2 **

《演算法藝術與資訊學競賽》

上傳者

張云聰

南陽理工學院動態規劃專題 回文字串

這個問題使用動態規劃求解,dp i j 表示字串下標為i的字元和下標為j的字元區間內構成回文所需加入的最少的字串。當str i str j 時,則dp i j dp i 1 j 1 當str i str j 時,dp i j min dp i 1 j 1,dp i j 1 1 初始化時候,d i i...

南陽理工學院動態規劃專題 回文字串

這個問題使用動態規劃求解,dp i j 表示字串下標為i的字元和下標為j的字元區間內構成回文所需加入的最少的字串。當str i str j 時,則dp i j dp i 1 j 1 當str i str j 時,dp i j min dp i 1 j 1,dp i j 1 1 初始化時候,d i i...

南陽理工學院ACM完全覆蓋

描述 有一天小董子在玩一種遊戲 用2 1或1 2的骨牌把m n的棋盤完全覆蓋。但他感覺遊戲過於簡單,於是就隨機生成了兩個方塊的位置 可能相同 標記一下,標記後的方塊不用覆蓋。還要注意小董子只有在m n的棋盤能被完全覆蓋後才會進行標記。現在他想知道 如果標記前m n的棋盤能被完全覆蓋,標記後的棋盤是否...