九度OJ 1342:寻找最长合法括号序列II (DP)
2015-11-16 20:19
344 查看
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:898
解决:366
题目描述:假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。
输入:测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过106。
输出:对于每个测试案例,输出一个整数,表示最后剩下的最长合法括号序列长度。
样例输入:
样例输出:
思路:
这个题比1337题简单多了。
计数左括号数目left,遇到左括号则加,右括号则减(left为0则不需要处理)。
右括号减说明遇到了一对括号匹配,count+=2。
最后count就是所求。
代码:
内存限制:32 兆
特殊判题:否
提交:898
解决:366
题目描述:假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。
输入:测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过106。
输出:对于每个测试案例,输出一个整数,表示最后剩下的最长合法括号序列长度。
样例输入:
(())() (()
样例输出:
6 2
思路:
这个题比1337题简单多了。
计数左括号数目left,遇到左括号则加,右括号则减(left为0则不需要处理)。
右括号减说明遇到了一对括号匹配,count+=2。
最后count就是所求。
代码:
#include <stdio.h> #define N 1000000 int main(void) { int i; char s[N+1]; int left, count; while (scanf("%s", s) != EOF) { left = count = 0; for(i=0; s[i]; i++) { if (s[i] == '(') left ++; else if (left > 0) { left --; count += 2; } } printf("%d\n", count); } return 0; } /************************************************************** Problem: 1342 User: liangrx06 Language: C Result: Accepted Time:30 ms Memory:1820 kb ****************************************************************/
相关文章推荐
- KVC与KVO的理解
- #在蓝懿学习iOS的日子#day20
- 九度OJ 1342:寻找最长合法括号序列II (DP)
- 关于《游戏编程中的人工智能》的源代码的小错误
- js 返回上一页和刷新
- bzoj-3676 回文串
- 如何根据相机的参数知道摄像机的内参数矩阵
- 一个优化算例的脚本代码
- Cookie中存放数据l加密解密的算法
- SVN:This client is too old to work with working copy…解决方法
- 文件输入和输出流
- web前端初步学习的自我总结
- centos更新镜像源问题
- [Android] 关于Android的.so文件你所需要知道的 - 简书
- hdu 4325 Flowers (区间处理 离散化)
- Ubuntu Server 14.04 配置VNC
- ImageNet Classification with Deep Convolutional Neural Network解读
- 20135326、20135303-linux实验一实验报告
- nginx args
- 使用Animations动画改变View的cornerRadius半径