码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 11988 - Broken Keyboard (a.k.a. Beiju Text)

时间:2014-11-16 13:26:17      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   sp   for   bs   amp   as   nbsp   

题目:在一个没有显示器的电脑上输入一个字符串,键盘坏掉了,会随机的出现home,和end按键,

            字符串中‘[‘代表home键(句首),‘]‘代表end键(句尾),问最后输出的字符串的格式。

分析:模拟,递归。逆向运算即可。

            一个格式符(‘[‘或者‘]’)只能影响到他后面的格式符间的字符串,与它前面的字符串之间的先后关系;

            如果,是home,前后倒置,如果是end不用改变顺序。

说明:强大的递归(⊙_⊙)。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

char buf[100001];
void dfs(int l, int r)
{
	int s = r;
	while (s >= l && buf[s] != '[' && buf[s] != ']') s --;
	if (buf[s] == ']') dfs(l, s-1);
	for (int i = s+1 ; i <= r ; ++ i)
		printf("%c",buf[i]);
	if (buf[s] == '[') dfs(l, s-1);
}

int main()
{
	while (gets(buf)) {
		dfs(0, strlen(buf)-1);
		printf("\n");
	}
    return 0;
}


UVa 11988 - Broken Keyboard (a.k.a. Beiju Text)

标签:io   ar   os   sp   for   bs   amp   as   nbsp   

原文地址:http://blog.csdn.net/mobius_strip/article/details/41171957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!