链接:https://ac.nowcoder.com/acm/problem/21303
来源:牛客网
题目描述

给你一个合法的括号序列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 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<queue>
 5 #include<set>
 6 #include<map>
 7 #include<stack>
 8 #include<vector>
 9 #include<cmath>
10 #include<algorithm>
11 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];
15 int dp[N][N][N];
16 int main()
17 {
18     scanf("%s%s",a+1,b+1);
19     n=strlen(a+1),m=strlen(b+1);
20     dp[0][0][0]=1;
21     for(int i=1;i<=n;i++){
22         for(int j=0;j<=m;j++){
23             for(int k=0;k<=n;k++){
24                 if(a[i]=='('){
25                     if(i&&k)dp[i][j][k]=max(dp[i-1][j][k-1],dp[i][j][k]);
26                     if(i&&j&&a[i]==b[j]&&(!k))dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-1][k]);
27                    }
28                 else{
29                     if(i)dp[i][j][k]=max(dp[i-1][j][k+1],dp[i][j][k]);
30                     if(i&&j&&a[i]==b[j]&&(!k))dp[i][j][k]=max(dp[i][j][k],dp[i-1][j-1][k]);
31                 }
32             }
33
34         }
35     }
36     if(dp[n][m][0])printf("Possible\n");
37     else printf("Impossible\n");
38     return 0;
39 }

View Code

转载于:https://www.cnblogs.com/MekakuCityActor/p/10747753.html

[删括号][判断可行性的dp]相关推荐

  1. POJ3189二分最大流(枚举下界,二分宽度,最大流判断可行性)

    题意:       有n头猪,m个猪圈,每个猪圈都有一定的容量(就是最多能装多少只猪),然后每只猪对每个猪圈的喜好度不同(就是所有猪圈在每个猪心中都有一个排名),然后要求所有的猪都进猪圈,但是要求所有 ...

  2. 《程序员面试金典》合法括号判断

    题目:对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串. 给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串. 测试样例: "(()())" ...

  3. LeetCode 22. 括号生成(回溯/DP)

    文章目录 1. 题目 2. 解题 2.1 暴力回溯 2.2 DP 1. 题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结 ...

  4. poj3104(二分判断可行性)

    /* translation:要使得一排衣服晾干,自然风干每分钟蒸发1单位的水分.用烘干机的话每分钟蒸发k单位的水分.求把所有衣物晾干的话至少需要多长时间? solution:二分查找最小可行解首先二 ...

  5. 【noi 2.6_3531】判断整除(DP)

    题意:给一个正整数数列,可将其相加或相减,问是否有一个结果能被K整除. 解法:似上一题"糖果"的状态定义,f[i][j]表示是否有一个选了前 i 个数的结果模K余j. P.S. 可 ...

  6. 区域判断hdu 3681 Prison Break bfs+二分+dp

    时间紧张,先记一笔,后续优化与完善. 这个是2010杭州区域赛的目题. bfs出最短路,二分谜底,dp判断可行性. #include <iostream> #include <cst ...

  7. PTA-至多删三个字符-(dp+容斥)

    至多删三个字符 题意: 就是给你一个字符串,然后你最多可以删掉3个字符,问你最终可以形成多少种不用的字符串. 思考: 刚开始看到其实没啥想法,要么就是暴力.但是仔细思考一下,这种题貌似没有什么偏僻的做 ...

  8. 【牛客 - 188D 】愤怒(01滚动数组优化dp,括号匹配方案个数,tricks)

    题干: 小w很生气 小w有一个长为n的括号序列 愤怒小w想把这个括号序列分为两个括号序列 小w想让分为的这两个括号序列同时合法 小w想知道一共有多少种划分方案 (划分的意思是划分为两个子序列) 注意两 ...

  9. 动态规划DP题单 AcWing算法基础课 (详解)

    目录 背包问题 背包问题初始化总结 AcWing 2. 01背包问题 AcWing 3. 完全背包问题 AcWing 4. 多重背包问题 AcWing 5. 多重背包问题 II AcWing 9. 分 ...

  10. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

最新文章

  1. 如何为机器视觉系统选择合适的图像采集卡
  2. 全国大学生智能汽车竞赛 --智慧物流创意组
  3. Fedora相关(一)
  4. php调用dll函数,[转载]matlab调用DLL中的函数
  5. sencha touch下,害人不浅的“*”号命名空间引入
  6. ubuntu16.04下面流畅运行pycharm设置
  7. android studio 显示图形_显示服务器实现(一)
  8. 前端接入HTTP协议浅析
  9. 判断radio单选按钮是否选中
  10. 软件测试--cookie学习
  11. linux简单命令3---帮助命令
  12. Java selenium和python_c#和Java和python设置selenium超时时间
  13. 用户行为序列推荐模型
  14. 最强大脑《智行营救》
  15. SONiC(3):手动运行docker ptf
  16. Vscode的beautify插件使用
  17. 算法开启循环队列武魂
  18. c语言程序设计评分标准,c语言程序设计期末(A)标准答案及评分标准.doc
  19. 错误: -source 1.6 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
  20. 【CSS3】边角 border-radius

热门文章

  1. 服务器虚拟机的关键特性,VMware Workstation的几大关键特性
  2. SendMessage 函数
  3. 数组 -- 13.2 Maximum Subarray --图解
  4. java-----抽象类与接口
  5. java使用mysql的escape遇到的坑
  6. vue 第二天(常用指令及插值语法)
  7. Liunx系统下的 Nginx的安装与启动
  8. 应用机器学习(五):支持向量机
  9. CFileDialog用法详解
  10. 23种设计模式(十八)状态变化之备忘录