博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 1626,括号序列
阅读量:6512 次
发布时间:2019-06-24

本文共 994 字,大约阅读时间需要 3 分钟。

题目链接:

 

题意: 给定一个字符串,看是否括号匹配,不匹配加括号,加最少的括号使得匹配。输出该结果。

分析: 解题思路和切木棍很类似。d(i,j) i ~ j 要加最少多少括号,他一定等于: 分两种情况,一:[s'],(s'),d(i,j) = d(i+1,j-1);二: d(i,j) = min(d(i,k),d(k+1,j));

 

注意: 输入有空行。

 

#include 
using namespace std;const int maxn = 100+5;char S[maxn];int n,d[maxn][maxn];bool match(char a,char b){ return (a=='('&&b==')')||(a=='['&&b==']');}void readline(char *S){ fgets(S,maxn,stdin);}int dp(int i,int j){ if(i>j) return 0; if(i==j) return 1; int& ans = d[i][j]; if(ans>=0) return ans; ans = n; if(match(S[i],S[j])) ans = min(ans,dp(i+1,j-1)); for(int k=i; k
j) return ; if(i==j) { if(S[i]=='('||S[i]==')') printf("()"); else printf("[]"); return ; } int ans = dp(i,j); if(match(S[i],S[j])&&ans==dp(i+1,j-1)) { printf("%c",S[i]); print(i+1,j-1); printf("%c",S[j]); return; } for(int k=i; k
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/5998221.html

你可能感兴趣的文章
比RBAC更好的权限认证方式(Auth类认证)
查看>>
httpd之编译安装详解
查看>>
服务器磁盘采购分析
查看>>
IBM Aix系统添加硬盘步骤
查看>>
Elasticsearch单机多实例
查看>>
学习ThinkPHP框架必须了解的知识点(一)
查看>>
Debug Universal Drivers
查看>>
硬盘格式化,误删除,无法识别的解决方式,你都学会了么?
查看>>
负载均衡(理论整理)
查看>>
Sass/Scss安装
查看>>
SANS:2016年安全分析调研报告
查看>>
Android SQLite学习总结
查看>>
Js 过滤以及绕过总结
查看>>
sed行处理详解 :交换行,合并行,删除行
查看>>
CentOS7/Red Hat7 NTP服务无法开机自启动
查看>>
我的友情链接
查看>>
10个值得推荐的免费设计模板网站
查看>>
为什么我越来越喜欢画低保真原型?
查看>>
java动态创建数据库(sql server)
查看>>
OCX转CAB
查看>>