刪括號 判斷可行性的dp

2022-09-17 07:30:14 字數 1504 閱讀 3121

給你乙個合法的括號序列s1,每次你可以刪除乙個"()"

你可以刪除0個或者多個"()"

求能否刪成另乙個括號序列s2

輸入描述:

第一行輸入乙個字串s (2 ≤ |s| ≤ 100)

第二行輸入乙個字串t (2 ≤ |t| ≤ 100 )

輸出描述:

如果可以輸出"possible"

否則輸出"impossible"

示例1

輸入複製

(())

()輸出

複製

possible
示例2輸入

複製

()

()輸出

複製

possible
示例3輸入

複製

(()()())

((()))

輸出

複製

impossible
示例4輸入

複製

((())((())())())

(()(())())

輸出

複製

possible
示例5輸入

複製

((())((())())())

((()()()()()))

輸出

複製

impossible

題意:給出乙個兩個合法的括號序列s1,s2,對s1可以不斷刪除(),注意(和)要相鄰,比如(()())可以刪除成(())或者()或者直接刪除成空串,但是不嫩刪除成()(),求是否可以變成s2

題解:dp[i][j][k]表示s1位置1...i在刪除掉若干個完整的()並且多刪除k個(正好對應s2的1...j是否可行,由於()必須連續,所以當k>0的時候,不能不刪除東西(即使s1[i]==s2[j]),也就是只有k==0的時候才能進行不刪除的更新

1 #include2 #include3 #include4 #include5 #include

6 #include7 #include8 #include9 #include10 #include11

using

namespace

std;

12 typedef long

long

ll;13

const

int n=105;14

int n,m,i,j,k;char

a[n],b[n];

15int

dp[n][n][n];

16int

main()

1728

else32}

3334}35

}36if(dp[n][m][0])printf("

possible\n");

37else printf("

impossible\n");

38return0;

39 }

view code

DP 3 可行性 存在 型

有n塊石頭分別在x軸的0,1,2 n 1位置.乙隻青蛙在石頭0,想跳到石頭n 1,如果青蛙在第i塊石頭上它最多可以向右跳距離ai,問青蛙是否能調到石頭n 1上.eg 輸入 a 2,3,1,1,4 輸出 true 最後一步 子問題 設f j 表示青蛙能不能跳到石頭j f j or f i and i ...

專案可行性的研究內容

可行性研究是一種系統的投資決策科學分析方法。專案可行性研究是指 在專案投資決策前,通過對專案有關的工程技術 經濟 社會等方面的條件和情況進行調查 研究和分析,對各種可能的技術方案進行比較論證,並對投資專案建成後的經濟效益和社會效益進行 和分析,以考察專案技術上的先進性和通用性 經濟上的合理性和盈利性...

mongodb分庫的可行性操作

1 建立乙個新的mongodb庫 2 把當前的mongodb集合改為比如 log data為log data 201904062230 3 把log data 201904062230備份到新庫中 4 在獲取資料的地方再連線新庫的log data 201904062230集合展示資料 示例如下 wh...