Uva 1626,括号序列
2024-08-22 04:55:30
题目链接:https://uva.onlinejudge.org/external/16/1626.pdf
题意: 给定一个字符串,看是否括号匹配,不匹配加括号,加最少的括号使得匹配。输出该结果。
分析: 解题思路和切木棍很类似。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 <bits/stdc++.h>
using namespace std; const int maxn = +;
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 ;
if(i==j) return ;
int& ans = d[i][j];
if(ans>=) return ans;
ans = n;
if(match(S[i],S[j]))
ans = min(ans,dp(i+,j-));
for(int k=i; k<j; k++)
{
ans = min(ans,dp(i,k)+dp(k+,j));
}
return ans;
} void print(int i,int j)
{ if(i>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+,j-))
{
printf("%c",S[i]);
print(i+,j-);
printf("%c",S[j]);
return;
} for(int k=i; k<j; k++)
{
if(ans==dp(i,k)+dp(k+,j))
{
print(i,k);
print(k+,j);
return ;
}
}
} int main()
{
int T; readline(S);
sscanf(S, "%d", &T);
readline(S); while(T--)
{
readline(S);
n = strlen(S) - ;
memset(d, -, sizeof(d));
print(, n-);
printf("\n");
if(T) printf("\n");
readline(S);
}
return ;
}
最新文章
- 复合主键@IdClass
- Spring in action笔记
- java 中的访问修饰符
- 使用doxygen生成注释文档
- [ios2] 利用钥匙串,在应用里保存用户密码的方法 【转】
- HDU-1013九余数定理
- 03 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之web层
- 基于centos7+nginx+uwsgi+python3+django2.0部署Django项目
- Day08 (黑客成长日记) 命名空间和作用域
- Redis分布式锁(ServiceStack.Redis实现)
- liunx文件操作 文件查看
- Windows编程之connect函数研究
- cocos2d-x_lua中tolua++绑定c++分享
- 用vue实现登录页面
- ElasticSearch安装及简单配置说明
- Encoding::CompatibilityError: incompatible character encodings: GBK and UTF-8
- php如何运行
- nodejs 实践:express 最佳实践 (一) 项目结构
- ConfigurationErrorsException: Unrecognized configuration section system.data.
- kubernetes调度之资源配额示例
热门文章
- PostgreSQL9.1 upgrade to PostgreSQL9.5rc1
- codeforces-Glass Carving(527C)std::set用法
- poj 算法 分类
- [转]JqueryEasyUI教程入门篇
- Java基础(4):Scanner输入的典型应用
- android ANR问题
- ACdream 1104 瑶瑶想找回文串(SplayTree + Hash + 二分)
- bzoj 4237稻草人
- paper 27 :图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)
- 关于mybatis 在C#.Net中批量增,删,改