题目链接: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类)的更多相关文章

  1. 全面深入介绍C++字符串:string类

    http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类 ...

  2. HDU 2585 [Hotel]字符串递归处理

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2585 题目大意:马克思要找个曾经去过的很好的旅馆,可惜他记不完整旅馆的名字.他有已知的部分信息和可能的 ...

  3. 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类

    4.1.String类的应用 class String类应用 { static void Main(string[] args) { string astring = "Now is The ...

  4. 字符串格式化-String类format方法

    常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. format()方法有两种重载形式. 显示不同转换符实现不同数据类型到字符串的转换,如图所示: 测 ...

  5. Java字符串(String类)

    定义方法: 1.String demo = "test"; 2.String demo = new String(); 3.String demo = new String(&qu ...

  6. C++字符串和string类介绍

    一.C风格字符串 ◆ 1.字符串是用字符型数组存储的,字符串要求其尾部以'\0'作为结束标志.如:    char string[ ]="C++ programming language&q ...

  7. 字符串排序--string类的使用

    最近帮他们做了一个简单的c++的题目,以前做过,当时是借鉴的别人的代码,现在也忘得差不多了,不过思路还有,现在正好可以再温习一下. 题目要求如下: 先输入你要输入的字符串的个数.然后换行输入该组字符串 ...

  8. HDU——2093考试排名(string类及其函数的运用以及istringstream)

    考试排名 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. 【HDOJ】1274 展开字符串

    栈的应用,需要注意括号前可能没有数字的情况. #include <cstdio> #include <cstring> #include <cstdlib> #in ...

随机推荐

  1. 【译】ASP.NET MVC 5 教程 - 1:入门

    原文:[译]ASP.NET MVC 5 教程 - 1:入门 本教程将教你使用Visual Studio 2013 预览版构建 ASP.NET MVC 5 Web 应用程序 的基础知识.本主题还附带了一 ...

  2. Python数据结构-元祖

    print()) print() #等价于: print('Tom is %d'%(5))

  3. nutch搏斗之一

    nutch搏斗之一 问题描述: 在用nutch1.0做generate 包括5亿url的crawldb时,它默认按照64M分块,分成777个map task,在运行的后期出现 Could not fi ...

  4. ural1018(树形dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=17662 题意:给一棵边有权值的二叉树,节点编号为1-n,1是根节点 ...

  5. Codeforces 549G. Happy Line 馋

    非常有趣的贪婪: Let's reformulate the condition in terms of a certain height the towers, which will be on t ...

  6. WPF界面设计技巧(6)—玩玩数字墨水手绘涂鸦

    原文:WPF界面设计技巧(6)-玩玩数字墨水手绘涂鸦 想让你的程序支持鼠标及手写笔涂鸦吗?只要敲入“<InkCanvas/>”这几个字符,你就会领悟什么叫“很好很强大”,今天我们来做一个手 ...

  7. 异常学习笔记+打包+doc该软件包编译

    jvm调用默认的异常处理机制printStackTrace办法      欲了解更多异常处理.问题      捕获异常代码块出现继承关系 应该把被继承的异常放在子类异常块的后面 watermark/2 ...

  8. 用python调用R做数据分析-准备工作

    0.R的介绍 R是自由软件,不带不论什么担保.在某些条件下你能够将其自由散布,用'license()'或'licence()'来看散布的具体条件. R是个合作计划.有很多人为之做出了贡献,用'cont ...

  9. C++ Primer 学习笔记_44_STL实践与分析(18)--再谈迭代器【下】

    STL实践与分析 --再谈迭代器[下] 三.反向迭代器[续:习题] //P355 习题11.19 int main() { vector<int> iVec; for (vector< ...

  10. 集合中Set_List必须覆盖 hashCode()与 equals()

    集合中Set_List必须覆盖 hashCode()与 equals() @Override public int hashCode() { System.out.println("==== ...