SGU 179.Brackets light
时间限制:0.25s
空间限制:12M
题意
给定一个合法的仅由'(',')'组成的括号序列,求它的下一个合法排列.假定'('<')'.
Solution:
先来回顾求下一个排列的算法:
对于一个排列 1 2 4 5 3
它的下一个排列将从后往前找到相邻的两个数是顺序的(即前面的数小于后面的数),将这两个数交换 得到 1 2 5 4 3
再将后面的所有数反转.
将得到
1 2 5 3 4
即最后结果.
对着道题来说,要保证交换的两个括号后得到的是合法的序列,只要记录每一个'('前面有多少个 '(',记为f[i],')'前面有多少个')',f[j].
由于最后一位一定是')',所以只要在前面找到相邻的两个'('和')' ,(注意到这里也是的顺序),满足f[i]>f[j];
将最后的‘)’和‘(’ 交换位置,再把后面所以的括号反转。即可得到我们需要的解。
code:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
#define sz(x) ((int) (x).size())
const int INF = 11111;
int f[INF], flag;
string s;
int main() {
cin >> s;
int s1 = 0, s2 = 0, len = s.size() - 1;
//记录f数组
for (int i = 0; i <= len; i++) {
if (s[i] == '(') f[i] = s1++;
else f[i] = s2++;
}
for (int i = len, t; i >= 0; i--) {
if (s[i] == ')') t = i;
else if (f[t] < f[i]) {
swap (s[len], s[i]);
//头文<algorithm>里的翻转操作
reverse (s.begin() + i + 1, s.end() );
flag = 1;
break;
}
}
//没有满足条件的顺序括号
if (flag == 0) cout << "No solution";
else cout << s;
}
SGU 179.Brackets light的更多相关文章
- SGU 179 Brackets light(生成字典序的下一个序列)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=179 解题报告:输入一个合法的括号串,求出这个括号串的字典序的下一个串.(认为'(' ...
- SGU179 Brackets light
179. Brackets light time limit per test: 0.25 sec. memory limit per test: 131072 KB input: standard ...
- SGU 分类
http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traff ...
- 今日SGU 5.13
SGU 146 题意:就是给你一个长度为l的圈,然后你跑步,每一段给你时间t和速度v,问你最后离起点多远 收获:就是把浮点数转为整数,然后但是会出现精度误差,比如l最多四位小数,那你就加0.00001 ...
- vs code 插件收集
名称 简述 Auto Close Tag 自动闭合HTML标签 Auto Import Typescript自动import提示 Auto Rename Tag 修改HTML标签时,自动修改匹配的标签 ...
- vscode python开发插件推荐
vscode作为一款好用的轻量级代码编辑器,不仅支持代码调试,而且还有丰富的插件库,可以说是免费好用,对于初学者来说用来写写python是再合适不过了.下面就推荐几款个人觉得还不错的插件,希望可以帮助 ...
- 工具 - VS Code
杂项 1. 主题 brackets light pro, One Monokai theme 2. directory tree indent guidelines, directory vertic ...
- 【代码编译器】vscode 配置详细介绍
前言:运行环境.net6.0 C#10 安装.NET Core SDK和运行 官网下载地址:https://www.microsoft.com/net/download/core 安装.Net 4.7 ...
- SGU 538. Emoticons 水题
538. Emoticons 题目连接: http://acm.sgu.ru/problem.php?contest=0&problem=538 Description A berland n ...
随机推荐
- 【转】LaTeX 符号命令大全
函数.符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{x} \acute{\eta} \check{\alpha} \grave{\eta} \breve{a} \ddot{y} ...
- 使用Struts2开发Java Web应用程序(目录)
连接地址 http://blog.csdn.net/struts2/article/details/1721752
- iScroll使用
新公司比较喜欢用iScroll,而我对此一无所知,特此调研iScroll用法,写在这里方便查看 IScroll是移动页面上被使用的一款仿系统滚动插件. myScroll = new IScroll(& ...
- .htaccess文件的妙用
.htaccess是Apache HTTP Server系统级别的配置文件,通常用来实现主机本身以外的一些功能的,比如说重定向.Gzip.以及访问限制等等………… 1.重定向(301跳转) 相信这个功 ...
- BufferedInputStream,FileInputStream,FileChannel实现文件拷贝
从上篇文章中知道BufferedInputStream是自带缓冲区的输入流,可以大大减少IO次数,提供效率.下面的例子中实现了用BufferedInputStream与FileInputStream实 ...
- “发送至Onenote”惹来的小麻烦(转)
原文来自 : http://blog.csdn.net/yiyu_0417/article/details/7864172 [看到这篇文章,我觉得以后我也会遇到这个问题,很有价值我就先拷贝了,留着以 ...
- [React] Intro to inline styles in React components
React lets you use "inline styles" to style your components; inline styles in React are ju ...
- Android 手动显示和隐藏软键盘
1.方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystemService(Contex ...
- unity3D与网页的交互
由于项目需要,要求用unity来展示三维场景,并在三维中能够方便的查询数据库等.一开始尝试在unity中直接连接数据库,当时连的xml,然而每次发布成网页后都会出现路径找不到等问题,所以迫不得已采用了 ...
- mysql默认用户名和密码
默认用户名:root 密码:gree..