HDU 1274 展开字符串 (递归+string类)
题目链接:HDU 1274 展开字符串
中文题。
左括号进入DFS函数,右括号return到上一层。
注意return回去的是这个一层递归中的括号中的字母串。
AC代码:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
char str[300];
bool vis[300];
int len;
string dfs(int pos)
{
int i,k;
int num=0;
string ans="";
string temp="",h="";
for(i=pos;i<len;i++)
{
if(!vis[i])
{
vis[i]=true;
if(str[i]>='0' && str[i]<='9')
{
num=num*10+str[i]-'0';
continue;
}
if(str[i]>='a' && str[i]<='z')
{
if(num==0)
num=1;
for(k=0;k<num;k++)
temp+=str[i];
num=0;
}
if(str[i]=='(')
{
ans+=temp;
h=dfs(i+1);
if(num==0)
num=1;
for(k=0;k<num;k++)
ans+=h;
temp="";
num=0;
}
if(str[i]==')')
{
ans+=temp;
return ans;//这一层的括号中的字母返回到上一层
}
}
}
ans+=temp;
return ans;
}
int main()
{
int t,i,j;
string out;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
memset(vis,false,sizeof vis);
scanf("%s",str);
len=strlen(str);
out=dfs(0);
cout<<out<<endl;
}
}
return 0;
} /*
100
3(ab)
1(1a2b1(ab)1c)
3(ab2(4ab))
ababa
ab3(cd)2e
3((ab))
3(3(ab))
3(3(ab)2(cd))
1a1a
1b
*/
HDU 1274 展开字符串 (递归+string类)的更多相关文章
- 全面深入介绍C++字符串:string类
http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类 ...
- HDU 2585 [Hotel]字符串递归处理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2585 题目大意:马克思要找个曾经去过的很好的旅馆,可惜他记不完整旅馆的名字.他有已知的部分信息和可能的 ...
- 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类
4.1.String类的应用 class String类应用 { static void Main(string[] args) { string astring = "Now is The ...
- 字符串格式化-String类format方法
常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. format()方法有两种重载形式. 显示不同转换符实现不同数据类型到字符串的转换,如图所示: 测 ...
- Java字符串(String类)
定义方法: 1.String demo = "test"; 2.String demo = new String(); 3.String demo = new String(&qu ...
- C++字符串和string类介绍
一.C风格字符串 ◆ 1.字符串是用字符型数组存储的,字符串要求其尾部以'\0'作为结束标志.如: char string[ ]="C++ programming language&q ...
- 字符串排序--string类的使用
最近帮他们做了一个简单的c++的题目,以前做过,当时是借鉴的别人的代码,现在也忘得差不多了,不过思路还有,现在正好可以再温习一下. 题目要求如下: 先输入你要输入的字符串的个数.然后换行输入该组字符串 ...
- HDU——2093考试排名(string类及其函数的运用以及istringstream)
考试排名 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 【HDOJ】1274 展开字符串
栈的应用,需要注意括号前可能没有数字的情况. #include <cstdio> #include <cstring> #include <cstdlib> #in ...
随机推荐
- 使用 JQueryMobile 点击超链接提示“error loading page” 错误
使用jquery mobile创建dialog时出现加载错误,“Error Loading Page”. 原因是:jquery mobile页面默认采用ajax方式进行交互,而ajax方式下是不支持f ...
- mini2440驱动奇谭——ADC驱动与測试(动态挂载驱动)
博客:http://blog.csdn.net/muyang_ren 实现功能:开发板动态载入adc驱动模块并能通过測试程序 系统:Ubuntu 14.04 驱动交叉编译内核:linux-2. ...
- 【C#遗补】之Char.IsDigit和Char.IsNumber的区别
原文:[C#遗补]之Char.IsDigit和Char.IsNumber的区别 Char中IsDigit和IsNumber的两个方法都是用来判断字符是否是数字的,那他们有什么区别 IsDigit ...
- SQL Server 2008备份数据库失败,拒绝访问的原因
原文:SQL Server 2008备份数据库失败,拒绝访问的原因 备份数据到特定目录是出现拒绝访问,然后测试备份到C盘根目录正常. 查了下原因: 是因为那个目录没有Authenticated Use ...
- Python用Tkinter的Frame实现眼睛护士的倒计时黑色屏幕
import Tkinter,time class MyFrame(Tkinter.Frame): def __init__(self): Tkinter.Frame.__init__(self) s ...
- 每天一个JavaScript实例-html5拖拽
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- ubuntu oracle jdk
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-javaX-i ...
- 基于.net开发chrome核心浏览器【一】
原文:基于.net开发chrome核心浏览器[一] 说明: 这是本系列的第一篇文章,我会尽快发后续的文章. 源起 1.加快葬送IE6浏览器的进程 世界上使用IE6浏览器最多的地方在中国 中国使用IE6 ...
- MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天
mysql 获取当年第一天的年月日格式:SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY); MySQL里获取当前week.month ...
- 使用ReactiveCocoa实现iOS平台响应式编程
使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Prog ...