南阳理工acm 15括号匹配(二)
括号匹配(二)
- 描述
-
给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。
如:
[]是匹配的
([])[]是匹配的
((]是不匹配的
([)]是不匹配的- 输入
-
第一行输入一个正整数N,表示测试数据组数(N<=10)
每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100 - 输出
- 对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行
- 样例输入
-
4 [] ([])[] ((] ([)]
- 样例输出
-
0 0 3 2
想法:
动态规划;
代码:
#include<stdio.h>
#include<string.h>
int data[110][110];
char str[110];
int min(int x,int y)
{return x>y?y:x;}
int is(char a,char b)
{
if(((a=='(')&&(b==')'))||((a=='[')&&(b==']')))
return 1;
return 0;
}
int main()
{
int n;
scanf("%d",&n);
getchar();
while(n--)
{
int i,j,k,len=0,mp;
memset(data,0,sizeof(data));
scanf("%s",str+1);
len=(int)strlen(str+1);
for(i=1;i<=len;i++)
data[i][i]=1;//初始化data【】【】
for(j=1;j<=len;j++)
{
for(i=j-1;i>=1;i--)
{
mp=0x1fffff;
for(k=i+1;k<=j;k++)
{
if(is(str[i],str[k]))
{mp=min(mp,(data[i+1][k-1]+data[k+1][j]));}
}
data[i][j]=min(mp,data[i+1][j]+1);
}
}
printf("%d\n",data[1][len]);
}
return 0;
}
注:data【i】【j】保存从第i个符号到第j个符号所要插入符号的个数。
想法:动态规划+搜索
代码:
#include<stdio.h>
#include<string.h>
int f[110][110];
char str[110];
int min(int x,int y)
{return x>y?y:x;}
int fun(int i,int j)
{
if(i>j) return 0;
if(f[i][j]>=0) return f[i][j];
if(i==j) return f[i][j]=1;
int mid,mp=110;
if((str[i]=='('&&str[j]==')')||(str[i]=='['&&str[j]==']'))
mp=fun(i+1,j-1);
for(mid=i;mid<j;mid++)
{
mp=min(mp,fun(i,mid)+fun(mid+1,j));
}
return f[i][j]=mp;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
memset(f,-1,sizeof(f));
memset(str,0,sizeof(str));
scanf("%s",str);
printf("%d\n",fun(0,strlen(str)-1));
}
return 0;
}
-
- 注:f【i】【j】保存从第i个符号到第j个符号所要插入符号的个数。
南阳理工acm 15括号匹配(二)相关推荐
- [NYOJ 15] 括号匹配(二)
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述给你一个字符串,里面只包含"(",")","[" ...
- 457. 括号匹配二
[题目描述]: 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些 ...
- 南阳理工ACM 题4《ASCII码排序》
4-ASCII码排序 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:76 submit:115 题目描述: 输入三个字符(可以重复)后,按各字符的A ...
- 单调递增最长子序列(南阳理工ACM)
描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理 随后的n行,每行有一个字符串,该字 ...
- 矩形嵌套 南阳理工ACM
描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1, ...
- 南阳理工ACM 题目73 比大小
比大小 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如123456789123456789要大于-123456 ...
- 兰州烧饼 南阳理工ACM 题目779
题目779 题目信息 运行结果 本题排行 讨论区 兰州烧饼 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 烧饼有两面,要做好一个兰州烧饼,要两面都弄热.当然,一次只能弄 ...
- 南阳理工ACM 题目67 三角形面积
三角形面积 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积 输入 每行是一组测试数据,有6个整数x1 ...
- Fibonacci数 南阳理工ACM 题目13
Fibonacci数 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地 ...
- 奋斗的小蜗牛 南阳理工ACM 题目599
题目599 题目信息 运行结果 本题排行 讨论区 奋斗的小蜗牛 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 传说中能站在金字塔顶的只有两种动物,一种是鹰,一种是蜗牛. ...
最新文章
- 【FFmpeg】结构体详解(二):AVStream、AVPacket、AVOutputFormat
- 690.员工的重要性
- 动态新增元素的js无效的解决方法
- 读取Webpage表中的内容
- Python Pandas –数据输入和输出
- 在html5中 空标签可以不写,HTML5中标签之间尽量不要加enter或者空格
- 统计自然语言处理基础——学习摘要(1)
- 机器学习中常用的优化算法:
- [九度][何海涛] 二叉树中和为某一值的路径
- 桌面计算机 回收站图标,桌面回收站图标不见了?回收站图标没了?3种方法快速解决...
- 嵌入式 职位描述 职位要求
- Cisco路由器之IPSec 虚拟专用网(内附配置案例)
- option样式美化 css,CSS select样式优化
- 基本统计值的计算(平均值,中位数,方差)
- C++继承以及菱形继承
- jenkins构建时,从国内maven私服下载jar包失败
- 软考高项论文写作要求有哪些
- 【Irrlicht Engine笔记】test5-UserInterface
- 使用RMAN的备份及恢复一例-丢失所有控制文件
- 2021年4月股市行情预测
热门文章
- Java 技术书籍大全
- [虚拟机]Windows server 2019 无法安装 .NET Frameword 3.5
- 计算机组成原理白中英 可见,计算机组成原理白中英主编ppt课件.ppt
- Fortran代码C化或Fortran与C/C++混编过程中矩阵转置的实现
- iperf3使用方法说明
- 高通android刷机工具,步步高工具高通版刷机救砖教程图解
- python 基础知识复习巩固
- java语言程序设计(梁勇)
- php导出excel出现乱码,完美解决phpexcel导出到xls文件出现乱码的问题
- 跨平台开源集成开发环境Eclipse