展开字符串

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2123    Accepted Submission(s): 1019

Problem Description
在纺织CAD系统开发过程中,经常会遇到纱线排列的问题。 该问题的描述是这样的:常用纱线的品种一般不会超过25种,所以分别可以用小写字母表示不同的纱线,例如:abc表示三根纱线的排列;重复可以用数字和括号表示,例如:2(abc)表示abcabc;1(a)=1a表示a;2ab表示aab;如果括号前面没有表示重复的数字出现,则就可认为是1被省略了,如:cd(abc)=cd1(abc)=cdabc;这种表示方法非常简单紧凑,也易于理解;但是计算机却不能理解。为了使计算机接受,就必须将简单紧凑的表达方式展开。某ACM队接受了此项任务。现在你就是该ACM队的一员,请你把这个程序编写完成。 已知条件:输入的简单紧凑表达方式的长度不超过250个字符;括号前表示重复的数不超过1000;不会出现除了数字、括号、小写字母以外的任何其他字符;不会出现括号不配对等错误的情况(错误处理已由ACM其他队员完成了)。
Input
本题有多个测试数据组,第一行输入的就是数据组数N,接着就是N行表达式,表达式是按照前面介绍的意义书写的。
Output
输出时含有N行,每行对应一个输入的表达式。
Sample Input
2 1(1a2b1(ab)1c) 3(ab2(4ab))
Sample Output
abbabc abaaaabaaaababaaaabaaaababaaaabaaaab

题解:没写出来,看了人家的修改了自己的,然而wawawa;

我的:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<string>
using namespace std;
const int INF=0x3f3f3f3f;
const double PI=acos(-1.0);
#define mem(x,y) memset(x,y,sizeof(x))
#define SI(x) scanf("%d",&x)
#define SL(x) scanf("%lld",&x)
#define PI(x) printf("%d",x)
#define PL(x) printf("%lld",x)
#define P_ printf(" ")
#define T_T while(T--)
typedef long long LL;
const int MAXN=250010;
char s[MAXN];
int k;
int len;
//int i;
int dfs(int x){int temp,e;for(int i=x;i<len;i++){//temp=1;if(s[i]==')')return i+1;/*if(s[i]>='0'&&s[i]<='9'){temp=s[i]-'0';i++;while(s[i]>='0'&&s[i]<='9'){temp=temp*10+s[i]-'0';i++;}}*/for(temp=0;isdigit(s[i]);i++)temp=temp*10+s[i]-'0';if(!temp) temp=1;if(s[i]=='('){while(temp--){e=dfs(i+1);}i=e;}else{while(temp--)printf("%c",s[i]);}}
}
int main(){int T;SI(T);T_T{memset(s,0,sizeof(s));scanf("%s",s);len=strlen(s);dfs(0);puts("");}return 0;
}

  大神ac;

#include <iostream>
#include <cctype>
#include <cstring>
#include <string>
using namespace std;string s;
int fun(int ith)
{int k,e;char c;for(c=s[ith++];ith<s.size()&&c!=')';c=s[ith++])//递归结束的条件是字符串结束或遇到右括号 {for(k=0;isdigit(c);c=s[ith++])k=k*10+c-'0';if(!k) k=1;if(c=='('){while(k--)e=fun(ith);ith=e;//重置ith的值,到下层递归结束的位置 }else{while(k--)putchar(c);}}if(c==')') return ith;//返回本次读到结尾的位置
}
int main()
{int i,j,k,T;cin>>T;while(T--){s.clear();cin>>s;fun(0);//进入递归 cout<<endl;}return 0;
}

  

转载于:https://www.cnblogs.com/handsomecui/p/5087251.html

展开字符串(dfs)相关推荐

  1. HDOJ 1274 展开字符串

    复杂的递归... 展开字符串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  2. HDU1274 展开字符串【文本处理】

    展开字符串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  3. HDU-1274 展开字符串

    Problem Description 在纺织CAD系统开发过程中,经常会遇到纱线排列的问题. 该问题的描述是这样的:常用纱线的品种一般不会超过25种,所以分别可以用小写字母表示不同的纱线,例如:ab ...

  4. c语言中dfs用pos做参数,LeetCode算法练习——深度优先搜索 DFS(2)

    更多干货就在我的个人博客 BlackBlog.tech 欢迎关注! 也可以关注我的csdn博客:黑哥的博客 谢谢大家! 我们继续LeetCode之旅. 做了一段时间的LeetCode,感觉还是不错的. ...

  5. java字符串连接效率_关于java:字符串连接中的“+”是否会影响效率?

    本问题已经有最佳答案,请猛点这里访问. 我在java中使用过String,StringBuilder和StringBuffer. 我想到了这个问题,而我从效率的角度思考. 字符串连接中的"+ ...

  6. [转载] python 字符串方法大全

    参考链接: Python字符串| rpartition 4.7.1.字符串方法 字符串实现所有常见的序列操作,以及下面描述的其他方法. 字符串还支持两种类型的字符串格式化的,一个提供了很大程度的灵活性 ...

  7. 【剑指Offer】个人学习笔记_38_字符串的排列

    目录 题目: [剑指 Offer 38. 字符串的排列](https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/) 题目分析 初始解 ...

  8. Python数据类型之字符串类型

    Python字符串类型 单行字符串 多行字符串 字符串是数组 裁切字符串 正索引 负索引 字符串方法 获取字符串长度的len()方法 删除开头和结尾空白字符的strip()方法 只删除开头的前导符的l ...

  9. dfs 访问拒绝_DFS服务不能开启

    Mary Dong: 您 好!感谢您的回复. 是的这是一台DC server2008 R2 有第二台DC 两台都有配置DNS并指向自己和对方,运行行命令repadmin /showrepl 第一台显示 ...

最新文章

  1. android 蓝牙耳机 判断,Android实现蓝牙耳机连接
  2. go 原子操作 atomic的使用
  3. PAT 1048 数字加密
  4. 对AI的未来以及优势的一些看法
  5. PHPExcel+phalcon+yii批量导入
  6. 浏览器显示linux桌面,如何从Web浏览器远程监视Linux服务器和桌面
  7. 面试问sql优化_您想了解的有关SQL Saturday的所有信息(但不敢问)
  8. 【PHP基础】文件操作
  9. Java web简单注册和登陆项目案例
  10. 千兆路由器什么牌子好?家用千兆路由器2018排行!
  11. 毕设-基于JavaWeb在线学习平台
  12. 学报格式和论文格式一样吗_求《浙江大学学报》的论文格式要求 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  13. openstreetmap数据下载大全(路网、水系、历史数据下载)
  14. linux启动SSH及开机自动启动
  15. iOS --切换控制器方式 push / modal
  16. 基于python的个人博客系统的设计开题报告_基于JavaSSM框架的个人博客系统设计与实现开题报告...
  17. 面试官:说说微信小程序的支付流程?
  18. 大数据告诉你中老年人上网爱干什么
  19. 学计算机用啥u盘好,U盘制作工具哪个好用?2020U盘制作工具推荐
  20. 智能驾驶功能软件平台设计规范 第二部分:感知融合功能服务接口

热门文章

  1. 2012总结--目录
  2. 二维树状数组(水题) POJ1195
  3. Stimulsoft Reports ASP.NET HTML5报表设计器
  4. windows和linux的共享
  5. Endianness
  6. 1085. Perfect Sequence (25)-PAT甲级真题
  7. eclipse中variable references non-existion resource可能原因及解决方案
  8. 数据分析Power BI数据建模教程(三)——如何优化数据模型
  9. MySQL一主二从复制环境切换主从库
  10. Cordova的安装及环境配置